0
death and gravity: reader 3.23 released – OPML, hosted reader intro
April 26, 2026
Posted 3 hours ago by
Hi there! I'm happy to announce version 3.23 of reader, a Python feed reader library. What's new? Here are the highlights since reader 3.22. OPML support reader can finally import and export feeds as OPML subscription lists! I initially wanted to use listparser, but I ended writing my own reader.opml module, mainly to keep dependencies down; it's just ~100 lines of code, including the work-around for an xml.etree bug I found.
Protip utf-8 is a valid XML encoding name, utf8 is not. Here are some web app screenshots: export feeds import feeds (select) import feeds (result) Hosted reader status update As I said last time, I'm working on a hosted version of reader. It's still some ways off from a proper launch, but I have to start writing about it eventually, so it might as well be here. Why another feed reader web app? While reader the library allows you to write your own feed reader, I don't expect most people to do that, and nor should they; for reader to be truly useful, it needs to reach all the way to the end user. But I am making the web app for myself anyway, why not share it with others? Why not just self-host it? Because for most people, self-host it is not the answer – it takes knowledge, time, and if you don't already have a server you can use, it can cost a bit too. If someone were to host reader for me, I'd gladly pay for it; what matters more is that it is possible to self-host, should the need arise; none of that sunsetting bullshit. But I am self-hosting for myself anyway, so sharing it with others wouldn't be that big of a stretch. And while it is a stretch, it's going to make reader better overall. OK, so what now? This is what is finished so far: multi-user version of the web app authentication via email infrastructure deployments using pyinfra (More on architecture and so on in a dedicated future article.) Remaining work to an MVP: caching feeds (get a feed once, not once per user) public demo tutorial mode, maybe And then there's the promotional stuff: give it a good name launch announcement, roadmap, and so on Meanwhile, if this sounds like something you'd like to use, get in touch. That's it for now. For more details, see the full changelog. Want to contribute? Check out the docs and the roadmap. Learned something new today? Share it with others, it really helps! PyCoder's Weekly HN Bluesky Reddit --> linkedin Twitter 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 allows you to: retrieve, store, and manage Atom, RSS, and JSON feeds mark articles as read or important add arbitrary tags/metadata to feeds and articles filter feeds and articles full-text search articles get statistics on feed and user activity import / export feeds as OPML 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? want to support custom information sources? ... while still supporting all the feed types feedparser does? If you answered yes to any of the above, reader can help. The reader philosophy reader is a library reader is for the long term reader is extensible reader is stable (within reason) reader is simple to use; API matters reader features work well together reader is tested reader is documented reader has minimal dependencies
Planet Python
Coverage and analysis from United States of America. All insights are generated by our AI narrative analysis engine.