RSS has really made inroads into the web in the last several years, and provides a nice way to keep up with numerous websites more efficiently than surfing to each one every day. The recent boom of blogging and news aggregation sites has boosted the popularity of RSS even more. If I always used the same computer at home and work, then this would be a review of the RSS client I had chosen and that would be the end of it. However, I move between 3 different workstations of various types, and I like to keep my information management centralized around port 80 for more mobility. A friend suggested taking a look at O'Reilly's Meerkat which collects numerous RSS feeds (mostly tech related) and sorts and categorizes them, allowing you to customize your view. I didn't care for the limiting of the feeds to tech subjects, and as always I wanted more control and more Python.
Enter Peerkat.
Peerkat's home page can be found at http://www.oreillynet.com/~rael/lang/python/peerkat/. Peerkat was created by Rael Dornfest who works for O'Reilly, and has also had a hand in the steering of the some of the forked history of RSS specifications. A quick read shows it sets up it's own web server by which you access the application. I'm not sure if I like or dislike that feature. Let's move on to the install!
The installation was an absolute breeze. Download, setup, start the server and feeder. Here's a peek at my install:
[root@drain src]# cd /usr/local/src/ [root@drain src]# wget http://www.oreillynet.com/~rael/lang/python/peerkat/downloads/peerkat.tar.gz - snip download - [root@drain src]# tar -zxvf peerkat.tar.gz - snip tar output - [root@drain src]# cd peerkat [root@drain peerkat]# python ./setup.py - automatic db setup and a few questions - Now start the feeder and server: [root@drain peerkat]# python ./feeder.py & feeder: 1052013668.0 Peerkat Feeder started feeder: 1052013668.0 Feeding Peerkat... Feeding Peerkat Central into path /peerkat 0/2 Feeding O'Reilly Network Weblogs into path /weblogs 0/15 feeder: 1052013672.0 Regular Feed Completed: 2 good / 0 bad feeds, 0 new / 17 total items Next feeding time at 2003-05-03 02:01PM [root@drain peerkat]# python ./server.py & server: 1052013686.0 Peerkat HTTP server started server: 1052013686.0 Purging deleted items older than 60 days server: 1052013686.0 Deleted items purged Now browse to http://www.dotpipe.org:8080 and it's up and running.
Peerkat's short timeframe from download to running is a definite plus. Now it's time to move on to configuration and customization. The web interface is clean and simple and I've already got some RSS feeds to start reading. I'm sure I'd like to do some customization of colors and layout at some point, but this is a good start.
One of my first concerns is that each RSS feed I want to add has to be entered manually, one at a time, into a web based form. This won't be a problem right now, but I forsee having a session where I collect lots of RSS feeds from the net, and then want to be able to integrate them into Peerkat in bulk. Also, in order to grab a feed you've just entered, it seems the only choice is to stop and start the feeder again. However, it appears that after the main initial config, Peerkat will provide a pretty decent interface for RSS feed viewing.
Everything seems great so far, but then I try to start adding my feeds. I start with a couple I know I would like, but when I restart the feeder I get errors about a bad feed.
feeder: 1052014709.0 Regular Feed Completed: 2 good / 1 bad feeds, 0 new / 17 total items
I take a look at the feed page again, and that's when I notice the big letdown. Peerkat appears to work only with RSS 1.0 feeds. This must be a political deciosion by Rael. It's extremely dissapointing. I was hoping for a parser more akin to the Ultra Liberal RSS Parser from Mark: http://diveintomark.org/projects/rss_parser/. This is not surprising with the large split between the RSS specification development camps (read the ORA book on RSS feeds for more info), but it's certainly enough for me to leave Peerkat behind. Perhaps I'll just write my own.