Feed On Feeds

ludo, Wednesday 03 September 2003 13:45:00

my feedonfeeds hack

I noticed from my logs that somebody using feedonfeeds is subscribed to my blog. Feedonfeeds is a nice PHP aggregator/reader, written by Steve Minutillo.

After shopping around for a while for a news aggregator, I settled on feedonfeeds a couple of months ago for a couple of reasons:

  • it has very few dependencies (any version of MySQL is ok, and a sufficiently recent PHP)
  • it is a server-side aggregator, allowing me to read news from home/office/wherever
  • it installs in a couple of minutes anywhere you can put a few PHP files
  • it is easily customizable
  • it works =)

So I installed feedonfeeds, and staying up to date has become a joy.

Never satisfied, after a couple of days of use I decided I absolutely needed a few features that feedonfeeds was lacking. So I set about refactoring it, and the project turned out to be a full rewrite. As usual with these things, the result is a half-completed app, so that I now have the (minor) features I wanted, and lack most basic ones feedonfeeds provides out of the box. =)

My rewrite is template-based, and factors out most common operations (eg SQL statements etc) in a few classes, instead of using lots of functions. So far, I have:

  • a fully functional news reading page with save/read/unread flagging, paging by page and by date, etc. (the one you see in the picture above)
  • a half-working feeds page, showing subscribed feeds and their new/read/saved news counts, and controls to add/edit/remove a feed that get you nowhere =)
  • an improved SQL schema, using InnoDB tables support for foreign keys
  • a new Python backend based on Mark Pilgrim's ultra-liberal feed parser, supporting the parser's use of HTTP features (If-None-Match and If- Modified-Since headers when requesting an RSS feed, and parsing the ETag and Last-Modified headers) to limit transfers; the uhm "backend" is an amazing 75 lines of code, including a 20 or 30 lines string containing the SQL schema =)

update: I finally managed to add the most important missing functionality to my feedonfeeds rewrite, and package it.

Readers' Comments

No user comments.