Skip to content

OPDS catalog support.

This patch brings basic OPDS support, the main motivation described here.

The short of the above is that in the wild this is mainly used for ebooks (and thus mainly useful for Peruse), but another reason to support it is that by itself, the opds catalog can be hosted on a neocities site if it has to be.

There's a number of issues with this patch still. The main one is that navigation feeds don't work, which are indicated in OPDS as an entry that links to another feed. I think it would need to get some signal from the item model that an navigation entry was selected so that the provider pulls up that new feed instead of it opening the entry details.

I am also unsure whether it was wise to reuse Syndication for this.


I made two provider files which I put on for testing.

The following KNSRC config is pointed at Project Gutenberg's popular books list. This one has open search, so the search functionality will use that, however none of the entries work because Gutenberg uses navigation entries in a particular way.


And this one is pointed at the open library ('s most downloaded list. This also has open search.

Name=Openlibrary opds provider
Name=Standard Ebooks opds provider


  • Loads a given feed, it's images, and loads it's download links.
  • Use the provided Opensearch for the search, if available.
  • Should load full entries, if possible. (Though the UI never asks it to load full entries so...)
  • Navigation links don't work.
  • Navigation feed entries cannot be selected.
  • We need a better way to indicate the non-open-access items. (filtered out for now)
  • entry navigation links are now mixed in with the download links. (tags sort filters them out now)
  • pagination support (together with the navigation links) (how does this even work within knewstuff???
  • lots of duplication between parseExtraDetails and parseFeed.
  • Caching is half-implemented.
  • hairiness regarding the way categories work???
Would be nice:
  • We could get authenticated feeds going by using basic http authentiation(in spec), or have bearer token uris (oauth bearcaps).
  • Autodiscovery or protocol based discovery of opds catalogs, this does not gel with the provider xml system used by knewstuff.
  • We should investigate atom threading for replies, or look if the replies point to an activitystreams object.
Edited by Wolthera van Hövell

Merge request reports