reader 2.14 released

July 2022 ∙ three minute read ∙

Hi there!

I'm happy to announce version 2.14 of reader, a Python feed reader library.

What's new? #

Here are the most important changes since reader 2.11!

Twitter support #

You can now use reader to follow Twitter accounts.

You still need a Twitter account to get a bearer token, but after that, https://twitter.com/user works like any other feed.

Each thread corresponds to an entry. Threads are rendered as HTML, but you can access the original JSON too, in case you want to do your own rendering.

Here's what it looks like in the web app:

thread with quote
thread with quote
thread with media
thread with media

Read time #

The new readtime plugin calculates the read time of an entry during feed update.

This makes available to any reader user a feature that was only available in the web app, and makes the web app faster.

Typing #

You can now type check code that uses reader.

reader has had type annotations for most of its existence, but user code would fail type checking because reader did not explicitly declare it.

Python versions #

reader 2.14 drops support for Python 3.7, and adds support for PyPy 3.9.

Bug fixes #

reader now skips RSS entries that have no <guid> or <link> with a warning, instead of failing the entire feed. Thanks to Mirek Długosz for the pull request.

For more details, see the full changelog.


That's it for now.

Learned something new today? Share this with others, it really helps!

What is reader? #

reader takes care of the core functionality required by a feed reader, so you can focus on what makes yours different.

reader in action reader allows you to:

  • retrieve, store, and manage Atom, RSS, and JSON feeds
  • mark articles as read or important
  • add arbitrary metadata to feeds and articles
  • filter feeds and articles
  • full-text search articles
  • get statistics on feed and user activity
  • write plugins to extend its functionality

...all these with:

  • a stable, clearly documented API
  • excellent test coverage
  • fully typed Python

To find out more, check out the GitHub repo and the docs, or give the tutorial a try.

Why use a feed reader library? #

Have you been unhappy with existing feed readers and wanted to make your own, but:

  • never knew where to start?
  • it seemed like too much work?
  • you don't like writing backend code?

Are you already working with feedparser, but:

  • want an easier way to store, filter, sort and search feeds and entries?
  • want to get back type-annotated objects instead of dicts?
  • want to restrict or deny file-system access?
  • want to change the way feeds are retrieved by using Requests?
  • want to also support JSON Feed?

... while still supporting all the feed types feedparser does?

If you answered yes to any of the above, reader can help.

Why make your own feed reader? #

So you can:

  • have full control over your data
  • control what features it has or doesn't have
  • decide how much you pay for it
  • make sure it doesn't get closed while you're still using it
  • really, it's easier than you think

Obviously, this may not be your cup of tea, but if it is, reader can help.