Feedjack
Feedjack is a feed aggregator written in Python using the Django web development framework.
Download: Feedjack 0.9.16
Features
Like the Planet feed aggregator:
- It downloads feeds and aggregate their contents in a single site
- The new aggregated site has a feed of its own (atom and rss)
- It uses Mark Pilgrim’s excelent FeedParser
- The subscriber list can be exported as OPML and FOAF
But FeedJack also has some advantages:
- It handles historical data, you can read old posts
- It parses a lot more info, including post categories
- It generates pages/feeds with posts of a certain category (example, feed)
- It generates pages/feeds with posts from a certain subscriber (example, feed)
- It generates pages/feeds with posts of a certain category from a certain subcriber (example, feed)
- A cloud tag/folksonomy (hype 2.0 compliant) for every page and every subscriber
- It uses Django templates
- The administration is done via web (using Django’s kickass autogenerated and magical admin site), and can handle multiple planets.
- Extensive use of django’s internal cache engine. Most of the time you will have no database hits when serving pages.
Installation:
You need:
- Python 2.3 or greater
- Feedparser 4.1
- A recent version of Django. (0.9.16 needs at least Django 1.0 beta 1)
Then execute python setup.py install
After that you must set up your Feedjack static directory inside your Django MEDIA_URL directory. It must be set in a way that Feedjack’s static directory can be reached at MEDIA_URL/feedjack/
For instance, if your MEDIA_URL resolves to /var/www, and Feedjack was installed in /usr/lib/python2.4/site-packages/Feedjack-0.9.0-py2.4.egg, just type this:
ln -s /usr/lib/python2.4/site-packages/Feedjack-0.9.10-py2.4.egg/feedjack/static/feedjack /var/www/feedjack
You must also add 'feedjack' in your settings.py under INSTALLED_APPS and then manage.py syncdb from the command line
Then you must add an entry in your Django urls.py. Just include feedjack.urls like this:
urlpatterns = patterns('',
(r'^admin/', include('django.contrib.admin.urls')),
(r'', include('feedjack.urls')),
)
That’s all.
Configuration:
The first thing you want to do is add a Site. To do this just open the admin site and create your first planet. You must use a valid address in the URL field, since it will be used to identify the current planet when there are multiple planets in the same instance, and to generate all the links.
Now you must add subscribers to your first planet. A subscriber is a relation between a Feed and a Site, so when you add your first subscriber, you must also add your first Feed by clicking in the “+” button at the right of the Feed combobox.
Feedjack has been designed to use Django’s internal cache engine to store database intensive data like that tagclouds, so it is highly recomended that you configure a CACHE_BACKEND in your Django settings (memcached, db or file)
Now that you have everything set up, just run the feedjack_update.py script to retrieve the data from the feeds and that’s all. Note that you must have a memcached, db or file CACHE BACKEND in order to see the updated feeds immediately.
If you try to access to your site and it is empty (you didn't complete the previous steps), you will see a HTTP 500 error. You have been warned.
Templates:
To create a new template, I would recommend copying the default template to a new directory in the same hierarchy and working from there. You will have to modify the template value in your Site configuration.
Authors:
- Gustavo Picón - Feedjack
- Petar Marić - Internationalization, serbian translation, patches
- Gabriel Puliatti - spanish translation
- Diego Escalante - Default theme
- Jesus del Carpio - Sinx theme
License:
BSD
Changes:
Feedjack 0.9.16
- Added compatibility with Django 1.0 beta 1: newforms admin and pagination
Feedjack 0.9.15
- Fixing feedjack_update for posts without a modified date (yay rss 0.92!)
Feedjack 0.9.14
- Lots of fixes/improvements in feedjack_update.py:
- better unicode handling on logging, this will prevent feeds not updating when using the --verbose flag
- Multithreaded feed fetching, needs the threadpool module, available in http://www.chrisarndt.de/projects/threadpool/. By default 10 threads will be used, can be modified with the -w option. If the threadpool module is not available, the old (SLOW) single threaded method will be used.
- Improved logging. Since multiple feeds can be processed in parallel now, all log entries go in a single line, with the feed id as a prefix.
- Stats in the logging, how many new posts, updated posts, unmodified posts and errors were found per feed and globally, and feed status (ok, unchanged, can't parse feed, http error, some exception)
- Reporting slow feeds, if a feed takes longer than 10 seconds to process, it will appear in the logs with the tag "(SLOW FEED!)"
Feedjack 0.9.12
- Feedjack is now django-unicode compliant
- Using max_length instead of maxlength in models.py to prevent warnings in syncdb
- Patched fjlib to use the new django refactored database backends
- Disabling autoscaping for post contents in the included templates
- Handling of feedparser returning an empty etag
- Fixing encoding related problems in tag urls
- Non-integer page parameters should be handled correctly
Feedjack 0.9.10
- Fixing CSS tags for styles 4 and 5
- feedjack_update now strip()s tags before storing them
- feedjack_update shows the feed number being processed
- We no longer cache the tags in feedjack_update, it had encoding problems and makes the script safe to run more than one instance at the same time
Feedjack 0.9.9
- Fixed i18n related bugs in the templates
- Fixed a bug related to the --settings option in feedjack_update.py
- The feeds per user, tag and user/tag are working again
- You can choose between rss2 and atom in the feeds for user, tag and user/tag
- The default /feed/ url now redirects to /feed/atom/ instead of /feed/rss/
Feedjack 0.9.8
- Internationalization (petar)
- Fixed and infinite loop in feedjack_update.py (do'h!) (petar)
- Added Serbian (Latin) translation (petar)
- Updated the feedparser calls in feedjack_update.py (petar)
- Added Spanish translation (predius)
Feedjack 0.9.7
- The request handler uses PATH when REQUEST_URI is not available (like in Django’s development server)
- Etags keep their quotation marks when stored.
- The update_feeds.py got a lot of love:
- Every option has a string (try with –help)
- A –verbose option. Default behavior is non-verbose and shows only the current feed being analyzed and errors.
- A –timeout option to set the wait timeout in ss when connecting to feeds.
Feedjack 0.9.6
- Fixed a bug in the feedjack_update.py script that wasn’t handling the same blog with multiple feeds correctly.

