libkiwix icon indicating copy to clipboard operation
libkiwix copied to clipboard

Access books using a metadata-based ID

Open rgaudin opened this issue 1 year ago • 3 comments

Although there are tickets that intersects with this discussion, such as #864; I'd like to express this one independently and clearly.

Request

Being able to build a kiwix-serve URL with only in-ZIM (thus Metadata) information.

Ideally, I'd like to be able to call /viewer#{bookId} or /content/{bookId} and get to said book. bookId here being the ZIM UUID.

Why would one need this?

  • The bookName to a book is based on the filename on disk at time of addition to kiwix-serve. This is thus somewhat volatile.
  • The bookName can be extracted from the OPDS catalog (link to /content/), of a running kiwix-serve. Needs live-querying of kiwix-serve.

Assuming I want to link to a specific content from outside of kiwix-serve ; if I can't rely on a running OPDS endpoint (as the libkiwix viewer does), I have to:

  • known the filename passed to kiwix-serve
  • duplicate and maintain part of libkiwix code to generate the bookName.

Adding support for this seems quite simple.

If the BookName part of URL looks like a UUID, it can be tested first and if it matches, a redirection to the current format happen.

This would ensures continuity of current behavior and allows UUID-based link to be presented as human in URL of browsers.

rgaudin avatar Feb 21 '24 14:02 rgaudin

100% agree. A minima, at the core, any end-point should be available easily for a machine: ie. using the ZIM id.

Other URL/ZIM identifiers should be considered as aliases. Such aliases cozld be very important but this the topic of #864.

kelson42 avatar Feb 21 '24 15:02 kelson42

13.4!

rgaudin avatar Feb 25 '24 14:02 rgaudin

13.2.0, sorry my bad.

kelson42 avatar Feb 25 '24 14:02 kelson42