CartaStraccia is a RSS feed reader and HTML viewer.

@Francesco Galla Francesco Galla authored on 5 Nov 2019
GitHub committed on 5 Nov 2019
public timestamps and ascii art 6 years ago
source Merge pull request #3 from FraMecca/docs 6 years ago
views proper refresh of feeds 6 years ago
.gitignore timestamps and ascii art 6 years ago
LICENSE.txt license 6 years ago
README.md docs 6 years ago
dub.sdl removed unused dependency 6 years ago
feeds.conf feeds from web, async processing, parsing of config file 6 years ago
README.md

Carta Straccia is a RSS feed aggregator

Written in D using sumtype, pegged, htmld, requests and Vibe.d

RSS parsing uses libmrss.

Features

  • Linux only (yep, it's a feature)
  • Server/client architecture with simple CLI parameters
  • Multi-tasking using Vibe.d's Tasks and the message passing model to concurrently process multiple feeds
  • Single-file feeds configuration, with separate, per-feed refresh interval
  • Multiple endpoints support: Display the aggregated news in HTML, from the command line (WIP) or edit source/cartastraccia/endpoints.d to add your desired visualization
  • HTML endpoint visualization can be customized editing public/css/* and the frontpage's Diet Template in views/index.dt
  • RSS parsing and partial validation (WIP) by keeping the tags needed to a minimum: Carta Straccia follows a text-preferred phylosophy and tries to push any other information out of the way by omitting it when possible.

Installation

This program is compatible with a Unix-like OS, notably GNU/Linux. Other platforms (OSX, Windows) are not supported and they probably won't ever be.

Dependencies

Carta Straccia uses libmrss to parse RSS feeds. It can be installed in the following ways:

  • Using your package manager: libmrss can be installed from the main repositories of some distros, using the appropriate package manager. Examples:
      - Gentoo/portage: `emerge libmrss`
      - Debian/apt and derivatives: `apt install libmrss`
      - etc.

Building

Requires a working D compiler and Dub:

  1. clone this repo:
git clone https://github.com/gallafrancesco/cartastraccia.git
  1. build:
dub build -b release

You'll find the cartastraccia executable in the root project directory.

Usage

CLI options and sample first usage:

$ cartastraccia --help

-d   --daemon Start daemon
-e --endpoint Endpoints to register [cli]
-f    --feeds File containing feeds to pull [feeds.conf]
-l     --host Bind to this address [localhost]
-p     --port Bind to this port [8080]
-b  --browser Absolute path to browser for HTML rendering [/usr/bin/elinks]
-r   --reload Reload feeds file
-h     --help This help information.

RSS feeds are gathered from a configuration file specified by the option "--feeds=" A feed configuration file should have the following format:

Title refresh-time  url

where refresh time can be expressed in seconds s, minutes m, hours h or days d. You can see an example feeds.conf file included in the repository.

How does it work

Cartastraccia is composed by a daemon and a client.

The Daemon

The daemon when launched parses the feed configuration file (exiting on failure). For every RSS feed a task (in the form of an actor) is launched

License

This project is licensed under the terms of the GPLv3 License.

Contributing

Feel free to open issues and PRs. Current TODOs are:

  • Work on a comfortable and polished CLI endpoint
  • Add enpoints in general (new visualization, curses, improve HTML...)
  • Implement an efficient categorization of feeds (by topic maybe?)
  • Oneshot mode (no daemon, cron support), might be connected to local archive for article (DB/text)?
  • Documentation and usage examples.