Canto (news aggregator)

Canto is a terminal based aggregator for online news. It supports all major news formats (RSS/RDF and Atom), as well as importing from and exporting to OPML. The news content is downloadable and as such Canto also has limited podcasting support. Canto intends to be extremely flexible and extensible, allowing the full use of the Python programming language in its configuration.

History
Canto is a Python rewrite of NRSS (a C-based newsreader that has since been deprecated), starting in early 2008. The project was started to address many of the shortcomings of NRSS, particularly multiple line item titles, more formats supported, and general fragility. A lot of code was eliminated by using Mark Pilgrim's feedparser and chardet libraries. The name canto was chosen to describe the divisions apparent in the default interface, like the divisions of a long poem.

Distinguishing features
Canto's main appeal is that all of the content is displayed in a single list that is fully visible by default. Feeds can be hidden and items can be dynamically filtered out so that at any given time the most relevant information is visible. The summary of an item is accurately depicted in HTML rendered to text, including image links and enclosure (podcast) content (both of which can be downloaded with external handlers).

Configuration is done using Python, allowing users to alter Canto with custom classes and functions. Sorting and filtering is done in the same manner as typical Python lists, and new themes and styles can just override part of the default renderer class. Extra functionality has been added using extra libraries.

Canto fully supports using Unicode/UTF-8 in feed items, and for user input.

Lastly, Canto's information is updated by a separate process, canto-fetch, which can either run as a daemon or as a cron-job.