Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Python

This branch is 48 commits ahead, 315 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
Extensions
browser
content
doc
i18n
interfaces
profiles/default
skins/feedfeeder
tests
README.txt
__init__.py
config.py
configure.zcml
contenthandler.py
events.py
feedparser.py
rebuild_i18n.sh
utilities.py
version.txt

README.txt

Feedfeeder
==========

Feedfeeder has just a few things it needs to do:

- Read in a few ATOM feeds (not too many).

- Create FeedfeederItems out of the entries pulled from the ATOM feeds.
  Any feed items that contain enclosures will have the enclosures
  pulled down and added as File items to the feed item.

- This means figuring out which items are new, which also means having
  a good ID generating mechanism.


Wait, no existing product?
--------------------------

There's a whole slew of RSS/ATOM reading products for zope and
plone. None of them seemed to be a good fit. There was only one
product that actually stored the entries in the zope database, but
that was aimed at a lot of users individually adding a lot of feeds,
so it needed either a separate ZEO process (old version) or a
standalone mysql database (new version).

All the other products didn't store the entries in the database, were
old/unmaintained/etc.

In a sense, we're using an existing product as we use Mark Pilgrim's
excellent feedparser (http://feedparser.org) that'll do the actual
ATOM reading for us.


Product name
------------

The product feeds the content of ATOM feeds to plone as document/file
content types. So "feedfeeder" sort of suggested itself as a funny
name. Fun is important :-)


Product structure
-----------------

I'm using archgenxml to generate the boiler plate stuff. There's a
'generate.sh' shell script that'll call archgenxml for you. Nothing
fancy.

The feedfeeder's content types are: 
  - folder.FeedfeederFolder
  - item.FeedfeederItem


How it works
------------

A feedfeeder is a folder which contains all the previously-added feed
entries as documents or files. It has a 'feeds' attribute that
contains a list of feeds to read.

Feedparser is called periodically (through a cron job?) to parse the
feeds. The UID of the items in the feed are converted to a suitable
filename (md5 hex hash of the atom id of the entry), that way you can
detect whether there are new items.

New items are turned into feed items.

Tests
-----

The look-here-first test is the doctest at 'doc/testDocIntegrationTests.txt'.

Testing is best done with zope's zopectl. 'instancemanager
<projectname> --test feedfeeder' will do that for you if you've set
up instancemanager. Otherwise 'bin/zopectl test -s
Products.feedfeeder'.

Something went wrong with that request. Please try again.