A customizable web feed aggregator for your browser.
Arch Forum ID:
Voracious is a customizable web feed aggregator for your browser. Please read the man page for more information.
The following references will be useful for customizing the template:
See the python2-xynehttpserver page for references and commands to generate certificates for HTTPS connections.
Here's a simple example that shows how to use the
$CLASS$ tag to assign colors to different feeds.
[paths] / /example http://feeds.arstechnica.com/arstechnica/index http://www.archlinux.org/feeds/news/ http://www.merriam-webster.com/word/index.xml http://xkcd.com/rss.xml [classes] arch archlinux ars arstechnica slashdot slashdot xkcd xkcd
<template> <head> </head> <body> <h1>Voracious</h1> <voracious_navbar /> <voracious_entry type="entry" voracious_class="CLASS" voracious_id="ENTRY_ID"> <div> <div class="header"> <a voracious_href="entry.link"> <voracious_text value="entry.title" /> </a> </div> <div class="meta"> <a voracious_href="feed.link"> <voracious_text value="feed.title" /> </a> <voracious_text value="entry.date_parsed" /> </div> <div class="summary"> <voracious_text value="entry.summary; entry.content" /> </div> </div> </voracious_entry> </body> </template>
<template> <head> </head> <body> <h1>Voracious</h1> <voracious_navbar /> <voracious_entry type="entry" voracious_class="CLASS"> <div> <div class="header"> <a voracious_href="entry.link"> <voracious_text value="entry.title" /> </a> </div> <div class="meta"> <a voracious_href="feed.link"> <voracious_text value="feed.title" /> </a> <voracious_text value="entry.date_parsed" /> </div> <object voracious_data="entry.link" width="100%" height="400"> <embed voracious_src="entry.link" width="100%" height="400"> </embed> Error: Embedded data could not be displayed. </object> </div> </voracious_entry> </body> </template>
You can find changes submitted by others that have not yet been incorporated into Voracious here.
voracious - a customizable web feed aggregator for your browser.
Voracious is a web feed aggregator with an http server backend that you can access through your web browser. It is intended to organize multiple feeds into coherent categories for quicker browsing with a better overview. For example, you could easily create a single webpage with links and summaries to articles on several of your favorite news sites.
Voracious is customizable through the use of a template file which allows you to choose which information is displayed and how. See the template file section below for details.
Voracious also offers a degree of privacy by retrieving feeds only when requested unlike most browsers which retrieve all of your feeds automatically. This will prevent servers from being able to log when you are online even when you are not actively browsing their content. Speed is not an issue though as voracious uses multiple threads to retrieve feeds and stores them internally for fast access once they have been downloaded. Feeds will be redownloaded after a timeout interval when they are again requested by the user.
To use voracious, simply run it from a console and then navigate to the server in your browser. The default address will be "http://localhost:8080/". You will first need to add some paths and feed urls to the configuration file, which you can do by following the "edit" link. Once you have added a path, you can navigate to it to display the feeds, e.g. "http://localhost:8080/example". The navbar will also contain links to all defined paths.
The default configuration directory is
$XDG_CONFIG_HOME is not set, it will use
The configuration file has three sections which are marked with brackets. The first section, "[paths]", specifies a server path and the feeds which should be aggregated under that path. Each path is placed at the beginning of its own line and feed urls which it should aggregate are indented on separate lines following it. For example,
[options] /example http://example.com/rss/1.xml http://example.com/rss/2.xml http://example.com/rss/3.xml
would create a server path under "/example" which would combine all three feeds. You could then view them by navigating to "http://localhost:8080/example" in your browser.
Note that all paths begin with "/".
The second section,
[classes], will associate css classes with feeds so that you can use the
$CLASS$ tag in the template file to customize the page style. For example, you could use it to associate different colors with differents feeds to make them more distinctive and recognizable. This section follows the same format as the "[options]" section except that instead of plain urls, regular expressions are used:
[classes] example example blue example.*1\.xml red example.*\.xml
. See the template file section below for more details.
The third section, "[templates]", will associate different template files with paths matching the regular expressions:
[templates] headlines_template.htm /news.* summaries_template.htm /blogs.*
The configuration file will be reloaded if it is changed while the server is running so you can update it without restarting voracious.
The template file is a custom XHTML file that contains special tags and attributes that are parsed and replaced when loaded by voracious. The interpolated XHTML is what will be displayed in the browser. The following body tags are recognized, all of which begin with "voracious_:
This will be replaced with a navigation list for the current path.
This element will be cloned for each entry in the aggregated feed entries. For each entry, it will interpolate the nested elements using the data from that entry, so that it will expand to a list of elements.
This element will be replaced with the interpolated value of its "value" attribute, as a text node. If the attribute "max_length" is set, it will crop the output if it is too long.
The value of any attribute with the prefix "voracious_" will be interpolated, then the prefix will be removed and the value will be appended to the new name. The best example is the CLASS interpolation:
These explanations may not seem very clear, but a quick look at the default template file and a bit of experiementation should show just how simple it actually is.
Value strings passed to the interpolation function are split into lists using ";" as a separator. An attempt is made to interpolate each item in the list. As soon as one succeeds, the new value is returned. This enables the template file to specify "defaults" when a feed lacks certain attributes, e.g. "entry.title ; feed.title" would return the entry's title if present, otherwise the feed title, or nothing at all if that too is missing. White-space is ignored in the list.
Most interpolations rely on attributes from the feedparser's feed and entry objects. For example, "feed.title" would be expanded to the feed's title, while "entry.title" would be expanded to the entry's title. The template file and the feedparser documentation should make this clear: http://www.feedparser.org/docs/
This will be replaced by a class string as determined by the configuration file.
voracious --help for information about the available command-line options.
Here are some screenshots using the default template file. Note that these are just basic examples and that you can fully customize both the display and the content of all feeds.
$entry.*$, as originally intended.
The parameterized tags use a CSS-like syntax, e.g.
$value:entry.summary;max:100$. Check the man page for details.
If you are using the default template file, simply delete it and Voracious will create a new version. The default template file is located at
$XDG_CONFIG_HOME is not set.