97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								=========
							 | 
						||
| 
								 | 
							
								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>
							 |