Replies: 5 comments 2 replies
-
For those who haven't seen it before, the concept of OPDS callback is illustrated in details on the opds.io website at https://opds.io/callback.html The OPDS URI scheme has been used by multiple reading apps for a while now. This includes:
In Aldiko, we implemented two different behaviours:
It's worth pointing out though that Apple's inability to support multiple apps for the same URI scheme is problematic on iOS/iPadOS. In some versions it opens the first app installed, in others it opens the last app installed.
I don't think that's necessary, using a rel value such as |
Beta Was this translation helpful? Give feedback.
-
This is also related to #16 |
Beta Was this translation helpful? Give feedback.
-
We're confronted with this issue in edrlab/thorium-reader#1336 (comment) and I would like to continue this discussion. If there was a way to notify Thorium that it must open its "OPDS feed picker" when a user clicks on some affordance (link/button) on a website, we would have a user friendly solution. |
Beta Was this translation helpful? Give feedback.
-
A less geeky approach which would complement OPDS callbacks and is underused by OPDS clients is to auto-discover feeds from any webpage. For example, feedbooks.com exposes: <link rel="related" type="application/atom+xml;profile=opds-catalog;kind=navigation" title="Feedbooks" href="/catalog.atom" />
<link rel="http://opds-spec.org/shelf" type="application/atom+xml;profile=opds-catalog;kind=acquisition" href="/user/bookshelf.atom" /> We can let users choose one or more OPDS catalogs to add from the discovered I haven't seen this used for OPDS 2 though, I don't know why? |
Beta Was this translation helpful? Give feedback.
-
This discussion is frankly confusing because multiple concepts are mixed together. I've seen three different things mentioned at least :
A catalog registry is a full catalog, that would contain:
There's absolutely no need to reinvent the wheel for navigation feeds or the search endpoint. What we would need to define are limited to:
I don't think that the main OPDS 2.0 specification is a good fit for this, a separate document would be much more suited. Auto-discovery on a webpage is what @mickael-menu was talking about and is mostly useful if you can provide a contextual action while browsing. In practice, this is not really useful for reading apps as they don't have the ability to provide such contextual actions in Chrome/Safari/Firefox without installing a browser extension. If the reading app provides the ability for the user to type their own URL, this could be useful to detect a catalog :
Finally a callback based on a URI scheme is mostly useful to facilitates the transition between a website and a reading app. The three main use cases are:
Adding a catalog is pretty straightforward. Let's use BANQ as an example once again. On their website, they could easily display a button to "Add a catalog" where the URL is opds://banq.pretnumerique.ca/v1/home.opds2. Completing an authentication is something covered in Authentication for OPDS, so I won't discuss it in details here. This is mostly handled inside an app, using a webview. Finally, fulfillling a transaction is very similar to adding a catalog. The only difference is that instead of adding a catalog to a reading app, you end up downloading a publication instead. As @mickael-menu has pointed out, URI schemes are less reliable on iOS/iPadOS than on other operating systems. |
Beta Was this translation helpful? Give feedback.
-
Currently, the addition of an OPDs feed is tedious and for geeks only: one has to know the URL of an OPDS feed, copy/paste it, name it manually and validate.
The new use case is:
This can be achieved via what is called "OPDS callback", with a button attached to a URL of type
opds://
. This scheme has been used before, but it seems an innovative way to use it.The same technique can be used in the scope of a OPDS "catalogs" feed, i.e. a list of OPDS feeds in which a user can choose one or more feeds to add to the app.
It would be great to write a specification (some will call it best practice document) defining how website developers on one side, reading app developers on the other side, should integrate such an affordance.
How should we express this in technical terms?
Beta Was this translation helpful? Give feedback.
All reactions