// the find
lemon24/reader
A Python feed reader library.
reader is a Python library for fetching, storing, and querying RSS, Atom, and JSON feeds in a single SQLite file, with no web framework dependency. It is for developers building their own feed reader, podcast client, or aggregator who want parsing and storage handled and the interface left to them.
- Full-text search over entries is built into the storage layer. The README example calls search_entries and gets back per-field match highlights, so there is no separate search index to run.
- Parsing is split from storage. The parser package has separate modules for feedparser, JSON Feed, HTTP, and local files, and examples/parser_only.py shows using the parser without a database.
- The extension points are exercised by the project's own features. Entry dedupe, enclosure dedupe, mark-as-read, readtime, autodiscovery, and a user-agent fallback all ship as plugins with their own test modules, which tests the plugin API better than an example would.
- The package is typed, with a py.typed marker and a mypy badge. The tests are organized per module, and tests/fakeparser.py lets update logic run without the network.
- Scheduling and concurrency are left to the caller. The README's update_feeds call is a single method, and nothing shown says how fetches run in parallel, how per-feed backoff works, or how long a refresh takes across thousands of subscriptions.
- Storage is one SQLite file, and the tree shows no alternate backend. That suits a desktop or single-user reader. Multiple writer processes or a hosted multi-user service will run into SQLite's write locking, and nothing in the tree suggests a second backend is planned.
- Two legacy trees sit next to the current code: _app/legacy and _plugins/legacy. Until the supported paths are documented, the layout alone does not tell you which web UI or plugin path to build on.