#feed #rss #atom #json #json-feed

feed-rs

A unified feed parser that handles Atom, RSS 2.0, RSS 1.0, RSS 0.x and JSON Feed

21 releases (5 stable)

1.4.0 Jan 10, 2024
1.3.0 Feb 10, 2023
1.2.0 Sep 27, 2022
1.1.0 Jun 14, 2022
0.1.3 Jul 7, 2017

#59 in Parser implementations

Download history 571/week @ 2024-01-01 644/week @ 2024-01-08 551/week @ 2024-01-15 558/week @ 2024-01-22 634/week @ 2024-01-29 579/week @ 2024-02-05 1125/week @ 2024-02-12 1250/week @ 2024-02-19 1194/week @ 2024-02-26 1113/week @ 2024-03-04 3472/week @ 2024-03-11 4049/week @ 2024-03-18 1425/week @ 2024-03-25 1704/week @ 2024-04-01 1142/week @ 2024-04-08 1385/week @ 2024-04-15

5,754 downloads per month
Used in 30 crates (26 directly)

MIT license

235KB
4K SLoC

feed-rs

Build Status Crates.io Status

Library for parsing various forms of feeds such as Atom, RSS and JSON Feed. It also supports extensions such as iTunes, Dublin Core and Media RSS.

Documentation

Usage

Add the dependency to your Cargo.toml.

[dependencies]
feed-rs = "1.4.0"

Reading

A feed can be parsed from any object that implements the Read trait.

use feed_rs::parser;
let xml = r#"
<feed>
   <title type="text">sample feed</title>
   <updated>2005-07-31T12:29:29Z</updated>
   <id>feed1</id>
   <entry>
       <title>sample entry</title>
       <id>entry1</id>
   </entry>
</feed>
"#;
let feed = parser::parse(xml.as_bytes()).unwrap();

The parser will automatically detect XML vs. JSON so parsing JSON Feed content works the same way.

use feed_rs::parser;
let json = r#"
{
  "version": "https://jsonfeed.org/version/1",
  "title": "JSON Feed",
  "description": "JSON Feed is a pragmatic syndication format for blogs, microblogs, and other time-based content.",
  "home_page_url": "https://jsonfeed.org/",
  "feed_url": "https://jsonfeed.org/feed.json",
  "author": {
    "name": "Brent Simmons and Manton Reece",
    "url": "https://jsonfeed.org/"
  },
  "items": [
    {
      "title": "Announcing JSON Feed",
      "date_published": "2017-05-17T08:02:12-07:00",
      "id": "https://jsonfeed.org/2017/05/17/announcing_json_feed",
      "url": "https://jsonfeed.org/2017/05/17/announcing_json_feed",
      "content_html": "<p>We — Manton Reece and Brent Simmons — have noticed that JSON...</p>"
    }
  ]
}"#;
let feed = parser::parse(json.as_bytes()).unwrap();

License

MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

Contribution

Any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.

Dependencies

~12MB
~307K SLoC