#feed #rss #atom #composability #focused #list #content

bin+lib koifeed

An RSS/Atom CLI in Rust focused on composability

1 stable release

1.0.0 Aug 8, 2021

#3 in #composability

MIT license

36KB
647 lines

koifeed

An Atom/RSS reader written in Rust. This is a personal project, but if you're interested in some portability-related changes, let me know.

Some Basic Questions

What

A barebones feed aggregator for the command line emphasizing composability.

Why

I love the terminal for several reasons: how applications can easily interact, how few machine resources are necessary, and its general retro aura. I used to use Newsboat, but it seems to lack documentation or implementation for features I want. It also contained features I don't need. I found it more difficult than preferred to pull the information I wanted from specific feeds and articles and to feed that information to other programs. Still, many of its users swear by it, so the fault probably lied with me there. In any case, this program is fun to write and maintain, and it works the way I want it to.

Dependencies (see Cargo.toml)

  • clap-rs
  • reqwest
  • xml-rs
  • probably some others that I forgot about

Usage

Setup

cargo install koifeed should work. Otherwise, building from source should work on most Unix-like systems. Feeds are stored directly in an OPML file. The program reads this file to update individual feed files named by title. There is currently no way to manage feeds other than editing the OPML file directly. There are no plans to add any. koifeed requires that this file be located at $HOME/.config/koifeed/feeds.opml; it stores feeds in $HOME/.local/share/koifeed/.

Commands

Command-line arguments are handled by the glorious clap-rs crate. clap provides the --help flag for koi as well as all of its subcommands.

Examples

Example Effect
koi list | grep 01-01 Print a list of all feeds that were published/last updated on January 1st.
koi content favnewsfeed 1 | w3m -T text/html Assuming the second article in the second feed contains raw HTML, page through the properly displayed HTML using w3m.
mpv `koi link youtubefeed 0` Use mpv with youtube-dl to play the latest video from a youtube-generated feed.

Dependencies

~6–18MB
~238K SLoC