This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

rsspull downloads and parses RSS and Atom feeds, converts posts into email messages, and stores them in Maildirs. This way you can read your feeds using an email client (I use claws, so I can access mailing lists, newsgroups and feeds all in one application). The heavy lifting is performed by the awesome feedparser library.


rsspull requires at least Python 2.6 (and won’t work under Python 3 yet). You can install it from PyPI like this:

$ pip install ws.rsspull

You need to create a configuration file in ~/.rsspull/config, like:

maildir = ~/Maildir/rss
logfile = ~/.rsspull/log
workers = 1

List the feeds you want to pull in an OPML file at ~/.rsspull/feeds.opml:

<?xml version="1.0" encoding="utf-8"?>
<opml version="1.1">
    <outline text="tech">
      <outline text="ongoing" xmlUrl="" />
    <outline text="general">
      <outline text="heisec" xmlUrl="" />
      <outline text="trac_example" xmlUrl=";ticket=on&amp;changeset=on&amp;wiki=on&amp;max=10&amp;daysback=90&amp;format=rss" auth="user:password"/>

Notes about the format:

  • You can group your feeds (using nested <outlines>), this does not matter to rsspull.
  • The text attribute is used as the folder name, relative to the maildir setting in ~/.rsspull/config. If you run rsspull on an IMAP server, you can create folder hierarchies by using something like text="" (check you IMAP server documentation how it represents folder hierarchies. The example with dots works for Courier, others might use actual subfolders, and so on).
  • Basic authentication is supported with the auth attribute.
  • You can use file:// URLs.

Then simply run:

$ rsspull

to download the feeds.


  • Uses If-Modified-Since HTTP headers to avoid downloading a feed that has not changed.

  • Addds a Content-Location header to each message that contains the URL of that post. I bound the following script to [return] in claws to open the current entry in a webbrowser:

    URL=`sed -ne '/^Content-Location/s/.*: //p' $1 | head -n 1`
    if [ -n "$URL" ]; then
        mozilla $URL &> /dev/null
  • Entries are converted to multipart messages, one with the original HTML and one converted into markdown-like plaintext (via html2text), so most of the time opening in a browser isn’t even necessary since you can read the post right in the email client.

  • Can use several worker threads to download and parse feeds to increase performance, since quite some time is spent waiting for downloads to complete (the workers setting in ~/.rsspull/config).

  • Has been in daily usage since 2007, so it definitely Works For Me(tm).


2.0 (2014-02-22)

  • Switch from spawning curl to using urllib2.
  • Package as egg.

1.2 (2013-10-03)

  • Use stdlib xml parser instead of python-xml.

1.1 (2009-05-23)

  • Write messages directly to Maildir instead of using procmail.
  • Send messages as multipart, text and html.

1.0 (2007-03-31)

Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date (55.0 kB) Copy SHA256 Checksum SHA256 Source Feb 22, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting