A planet (feed aggregator) for OCaml.
|
1 year ago | |
---|---|---|
.github | 1 year ago | |
example | 1 year ago | |
lib | 1 year ago | |
.gitignore | 1 year ago | |
.ocamlformat | 1 year ago | |
CHANGES.md | 1 year ago | |
LICENSE | 1 year ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
dune-project | 1 year ago | |
river.opam | 1 year ago |
RSS2 and Atom feed aggregator for OCaml
opam install river
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
Take a look at our Contributing Guide.