OPDS leftovers
Open, WishlistPublic

Description

Make it possible to open 'arbitrary' opds files.

We should make it possible for people to add their own opds feeds to, say, Peruse.

Pagination

Pagination is possible when there's a next link available in the opds feed, as per rfc 5005.
Right now these links are loaded into the search presets.

For this we need...

  1. The engine needs to keep a list of providers that can load more, and that should be used to determine if more can be loaded.
  2. The opds provider should try to figure out when next page is being requested instead of a search being done.
  3. The engine needs to set the page to 0 when it loads a new feed and not a paged one.
  4. We need to figure out why, if all these things have been done, the item view still contains previous entries :|

Better facets handling

Some of the facets (implemented as search presets), can be grouped. We should probably group them in the UI. There's also a notion of 'currently active', which should also be doable.

Better handling of full entries

Entries may have more information in a full-entry marked link. Right now this full-entry marked link is stored as a download link, but this is not what download links are supossed to be...

Options:

  1. We keep a hashmap of entryIds and fullEntry detail links. I am not sure how much this scales?
  2. We make 'isDownloadLink' into an enum, that defines 'File', 'DownloadLink/Indirect aqcuisition', 'More details'.

Of course, this all requires loadEntryDetails to work, so... :x

Entry Navigation Links

Entries may have references to related OPDS feeds, these are separate from the feed navigation links. I am unsure how we should parse these?

Book specific data

There's a number of book specific data, some of them can go into tags???

Publisher, wordcount, pages, other duration, issued data, modified date, contributors, language, etc.

Multiple authors

OPDS entries don't necessarily display the entry author, but rather use the downloadable item author. This also means there can be multiple authors. KnewStuff doesn't support this.

Multiple categories?

OPDS uses the Atom categories, and there can be multiple categories on an entry (Eg. fantasy, witches, dragons). KnewStuff doesn't have the ability to set multiple categories.

Search without open search

I need to implement this.

Sorting

Also need to implement this. One problem: OPDS has a natural order, and also no concept of 'rating' or 'popular'.

Buy/Borrow/Subscribe

https://specs.opds.io/opds-1.2#53-acquiring-publications

So, this one's a bit tricky, but there's indirect acquisitions, which are like downloadlinks. So, they point at a webpage where you can get the thing. We'll need to figure out a way to represent what exactly is in the indirect acquisition, as the mimetype is html.

Then there's direct acquisitions. We can handle the open-access type. The buy type probably uses some cleverness on the server end, and proly requires authentication, ditto with subscribe. Both will need better UX as well.

Finally, there's borrow, which is an odd duck, because it relies on the weird artificial scarcity that is imposed on libraries that offer ebooks. The artificial scarcity is of course enforced by some DRM thing, and so the files that are downloadable this way can't actually be read by anything on a freesoftware desktop. I do want to implement some UX to indicate the borrowing state, because I don't want to look down on libraries for having to implement these kinds of things.

Authentication

Requires http authentication at minimum, but proly best left waiting till after the attica comments-patch is handled.

Comments?

I think it might be feasible to handle comments with rfc4685 or by seeing if one of the alternate links is an activitypub entry that we can then parse for comments and other info. This would be sort of experimental but spec-compliant.

woltherav created this task.Jun 3 2021, 1:49 PM
woltherav triaged this task as Wishlist priority.
woltherav updated the task description. (Show Details)Jun 3 2021, 1:52 PM
woltherav updated the task description. (Show Details)
woltherav updated the task description. (Show Details)Jun 3 2021, 1:57 PM