Repository navigation
Replies: 1 comment 2 replies
|
Since we already use the metadata.db and CWA for a bunch of other things, for this specific use case with this specific implementation (check if metadata.db exist, if it does, read it) I am fine with adding a little check mark or something saying this book already exists |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Asking before writing a PR, because the README puts library integration in the non-goals and I would rather hear no now than send you something you have to decline.
What it is
Search results and the details dialog show a small badge per format when you already own the book, one for Ebook and one for Audiobook. Nothing else changes. No monitoring, no collection management, no writes of any kind.
It reads ownership from providers behind a small interface:
metadata.dbread only. I wrote this one because my library is Calibre-Web-Automated on the same box, and a file read avoids a second service call.Matching is by external ids and ISBN first, then a fuzzy title and author-surname fallback. Results are cached with a TTL and a cheap fingerprint, so a search does no extra network calls once the index is warm.
Size and shape
About 1000 lines with tests, across
core/library_index.py, alibrary_providers/package, one frontend component, and a docs page. Entirely opt in and off unless a provider is configured, so an instance that ignores it sees no change and pays nothing.I have been running it daily for a while against a 98 book Calibre library and a 317 item Audiobookshelf instance.
Why I think it is worth asking
The non-goals are about Shelfmark managing a library. This does not manage anything, it just avoids downloading a book you already have. That is closer to search quality than to library management, but you own the line and I might be drawing it in the wrong place.
If you want to look at real code rather than a description, I can open it as a PR and you can close it if it is not for you. If it is a no, that is genuinely fine, it stays in my fork and I will keep sending the general fixes.
All reactions