This is a small but flexible feed aggregator. It scans news feeds (RSS & Atom) and sends the entries via e-Mail. The user can configure each feed to be sent immediately or in a daily digest.
Go to file
2013-07-01 10:46:07 +02:00
models bug fix, needed if keepafterlastfetch is 0 2013-07-01 10:46:07 +02:00
readability implemented newer version of readability-module 2013-04-15 23:33:24 +02:00
.gitignore ignore logfiles 2013-03-19 20:00:34 +01:00
atomstrom.conf.sample rewrote mail function, to avoid warnings on mailserver 2013-03-22 22:05:15 +01:00
atomstrom.py first-level quote looks better in vim 2013-05-10 07:14:27 +02:00
ddate.py include license info in all source files 2013-04-17 23:24:05 +02:00
feedparser.py adapted to feedparser 5.1.3 2013-03-19 22:40:47 +01:00
gpl.txt included license and basic documentation 2013-04-17 22:21:16 +02:00
html2text.py updated html2text-module to version 3.200.3 2013-03-20 23:20:54 +01:00
LICENSE included license and basic documentation 2013-04-17 22:21:16 +02:00
README included license and basic documentation 2013-04-17 22:21:16 +02:00

=========
Atomstrom
=========

Atomstrom is a small but flexible feed aggregator.
Copyright (C) 2013  Ronald Schaten <ronald@schatenseite.de>

See <https://dev.0x50.de/projects/atomstrom/> for current versions and
development info.


Idea
----

The idea of Atomstrom is based on the great little aggregator rss2email
<http://www.allthingsrss.com/rss2email/>, a small tool written in Python that
fetches feeds and sends the received entries via mail. It is a fine program,
and I used it for several years.


Installation
------------

Atomstrom doesn't need any installation. Just copy the included
atomstrom.conf.sample to atomstrom.conf and make the appropriate settings.

If you use MySQL, you'll have to create a database first. The database
structure will be created by Atomstrom on its first launch.


Configuration
-------------

Up until now, feeds are configured by making the right settings in the
feed-table of the database. The settings are as follows:

* id: Set automatically by the database, you don't have to change this.
* url: URL of the feed you'd like to fetch.
* frequency: Minutes between fetching the feed.
* keepdaysafterlastfetch: Entries are deleted if they aren't included in the
  feed for n days.
* daily: Entries won't be sent immediately, they are included in the daily
  digest.
* resolveredirects: Some feeds use URL-forwarders in their feeds to create
  usage stats. Enable this if the forwarder-URL is ugly.
* readability: Use readability to fetch the URL and extract the part that is
  probably the entry content.
* fullpage: Fetch the full page from the URL.
* contentcolumn: Can be one of summary, content, fullpage or readability. This
  marks the column in which the content is found that will be sent.
* html2textcontent: Convert the content-text from HTML to text.
* html2textignorelinks: Ignore links when converting to text.
* html2textignoreimages: Ignore images when converting to text.
* enabled: Marks if this feed is enabled or not.

The on-/off-options have to be NULL to be disabled, 1 otherwise.


Usage
-----

I use two cronjobs to fetch and send feeds:

*/5 * * * * cd /atomstrom-directory/ && ./atomstrom.py -fs > /dev/null 2>&1
5 6 * * * cd /atomstrom-directory/ && ./atomstrom.py -d > /dev/null 2>&1

So every five minutes, all due feeds will be fetched and single mails will be
sent. Every day at 06:05, the daily digest will be sent.


Command Line Arguments
----------------------

The following switches can be used from the command line interface:

-h, --help          show this help message and exit
-f, --fetch         fetch all feeds
-s, --single        send single mails
-d, --daily         send daily digest
-l, --list          list all configured feeds
-e ID, --delete ID  delete feed <ID> from configuration
-r ID, --reset ID   reset data for feed <ID>

Note that until now it's not possible to add or configure feeds from the
command line. Maybe this feature will be included in some future version.


Thanks
------

I'd like to thank the creators of the modules I was able to use for this
project:

* Universal Feed Parser: <http://code.google.com/p/feedparser/>
* SQLAlchemy: <http://www.sqlalchemy.org/>
* python-readability: <https://github.com/buriy/python-readability>