package river

  1. Overview
  2. Docs
RSS2 and Atom feed aggregator for OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

river-0.2.tbz
sha256=8bf4a8cfc46ed255a4c97c081308755b8a35108778c3b80e5ec3f6a2cb3e8c72
sha512=a8aa8dfe4156640de04e7236eb0b5beffbf7d802ed110ae7afdc595e5b723dfcdb059fc6bf344c48cf06c47193f5727c4aefd060ace0cf7619c60e7071de1392

Description

RSS2 and Atom feed aggregator for OCaml

Published: 14 Apr 2022

README

River

RSS2 and Atom feed aggregator for OCaml

Features

  • Performs deduplication.

  • Supports pagination and generating well-formed html prefix snippets.

  • Support for generating aggregate feeds.

  • Sorts the posts from most recent to oldest.

  • Depends on ocamlnet for html parsing.

Installation

opam install river

Usage

Here's an example program that aggregates the feeds from different sources:

let sources =
  River.
    [
      { name = "KC Sivaramakrishnan"; url = "http://kcsrk.info/atom-ocaml.xml" };
      {
        name = "Amir Chaudhry";
        url = "http://amirchaudhry.com/tags/ocamllabs-atom.xml";
      };
    ]

let () =
  let feeds = List.map River.fetch sources in
  let posts = River.posts feeds in
  let entries = River.create_atom_entries posts in
  let feed =
    let authors = [ Syndic.Atom.author "OCaml Blog" ] in
    let id = Uri.of_string "https://ocaml.org/atom.xml" in
    let links = [ Syndic.Atom.link ~rel:Self id ] in
    let title : Syndic.Atom.text_construct =
      Text "OCaml Blog: Read the latest OCaml news from the community."
    in
    let updated = Ptime.of_float_s (Unix.gettimeofday ()) |> Option.get in
    Syndic.Atom.feed ~authors ~links ~id ~title ~updated entries
  in
  let out_channel = open_out "example/atom.xml" in
  Syndic.Atom.output feed (`Channel out_channel);
  close_out out_channel

Contributing

Take a look at our Contributing Guide.

Dependencies (10)

  1. lambdasoup
  2. ocamlnet
  3. lwt
  4. ptime
  5. cohttp-lwt-unix >= "5.0.0"
  6. cohttp-lwt >= "5.0.0"
  7. cohttp >= "5.0.0"
  8. syndic >= "1.5"
  9. dune >= "3.0"
  10. ocaml >= "4.08.0"

Dev Dependencies (1)

  1. odoc with-doc

Used by

None

Conflicts

None