Jason Diamond did an incredible job adding ETag and Last-Modified support to my ultra-liberal RSS parser. If you don’t know what this means, read Charles Miller’s HTTP Conditional Get for RSS Hackers. Basically, it allows the parser to avoid redownloading feeds that haven’t changed. This is a topic of much debate at the moment. I wish I could say I planned this release to coincide with all the hubbub, but I didn’t. Hell, I didn’t even write the code. Jason deserves all the credit. Thanks, Jason.
Here’s an example of how to use the new features.
If you were using version 1 of rssparser.py, please note that the return value of rssparser.parse has changed. It previously returned two values, a dictionary of channel information and a list of items. Now it returns a dictionary with (at least) channel and items elements, which correspond to the previous return values. The dictionary may also contain etag and modified values; if either of these match the values you passed in, the feed hasn’t changed.
Other improvements: version 2.0 now handles guid elements correctly if isPermaLink="false", which, ahem, I used in my own feeds now. And it no longer confuses the title of a textInput or image with the title of the channel. (Version 2.1 will also return textInput and image elements from rssparser.parse, if that information is present in the feed. I didn’t write that code either. I haven’t been writing much code lately. Maybe I should take up knitting.)

