package river
RSS2 and Atom feed aggregator for OCaml
Install
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)
- lambdasoup
- ocamlnet
- lwt
- ptime
-
cohttp-lwt-unix
>= "5.0.0"
-
cohttp-lwt
>= "5.0.0"
-
cohttp
>= "5.0.0"
-
syndic
>= "1.5"
-
dune
>= "3.0"
-
ocaml
>= "4.08.0"
Dev Dependencies (1)
-
odoc
with-doc
Used by
Conflicts
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page