Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

Aspirator

Aspirator is a simple, lightweight web-based feed reader. Main features:

  • RSS and ATOM support
  • Feeds are grouped by category
  • Webmail-like interface with pagination and intelligent browsing
  • Filter out already read entries
  • Control on entries' time to live (days, weeks, months or forever)
  • Theme support, with a simple default theme
  • Nice with web servers, uses ETag and Last-Modified HTTP headers
  • Handles HTTP status codes nicely (permanent redirects, gone, not-modified…)
  • Hides images by default (and therefore filters ads and thracking stuff)
  • Multiple user support
  • PubSubHubbub support
  • OPML import

It is built with Django and is still under development. There is no stable / public / versioned / maintained / whatever release yet.

Installation

Getting the code:

hg clone https://bruno@bitbucket.org/bruno/aspirator/
cd aspirator

External requirements:

  • Django 1.2.* (it may work with previous version but hasn't been tested)
  • Python 2.5 or greater (not tested with python 2.4 but it may work)
  • django-push
  • opml

You can install the dependencies using the pip requirements file in the source tree:

pip install -r requirements.txt

Configuration

Create a settings.py file and set at least the DATABASES setting. Here is a suitable settings.py file for production:

from default_settings import *

DEBUG = False
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    ('Your name', 'your-email@example.com'),
)
MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # or whatever you're using
        'NAME': 'your_db_name',
        'HOST': '', # leave blank if localhost
        'USER': 'db_user',
        'PASSWORD': 'db_password',
    },
}

MEDIA_URL = 'http://media.your_domain.com'
TIME_ZONE = 'Europe/Paris'

EMAIL_HOST = 'mail.your_domain.com'
EMAIL_SUBJECT_PREFIX = '[Aspirator] '

We assume that you have a virtual host pointing to the aspirator/media directory to serve static files.

Then deploy the Django app using the recipe that fits your installation (with mod_wsgi or mod_fcgi). More documentation on the Django deployment guide.

Once your application is deployed (you've run ./manage.py syncdb to create the database tables), you can add users to the application. On the admin interface, add as many users as you want. When you've added some categories and feeds to your account, you can crawl for updates:

python manage.py updatefeeds

Set up a cron job to update your feeds on a regular basis, every hour is fine, more can be quite aggressive:

59 * * * * python /path/to/aspirator/manage.py updatefeeds

Enjoy the hot news!

Development

If you want to contribute and need an environment more suited for development, you can use the settings.py file to alter default settings. For example, to enable the django-debug-toolbar:

MIDDLEWARE_CLASSES += (
    'debug_toolbar.middleware.DebugToolbarMiddleware',
)

INTERNAL_IPS = ('127.0.0.1',)

INSTALLED_APPS += (
    'debug_toolbar',
)

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS': False,
    'HIDE_DJANGO_SQL': False,
}

When running manage.py updatefeeds on your development machine, make sure you have DEBUG = True in your settings to avoid making PubSubHubbub subscription requests without any valid callback URL.

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.