Go to file
Sebastian Hugentobler cafb81b9e2
All checks were successful
Build Multiarch Container Image / call-reusable-workflow (push) Successful in 29m13s
doc string for thumbnail generation
2024-06-26 22:37:05 +02:00
.gitea/workflows add gitea workflow for ci 2024-05-10 18:17:47 +02:00
calibre-db ensure the search database is attached to all connections 2024-06-26 17:41:04 +02:00
little-hesinde doc string for thumbnail generation 2024-06-26 22:37:05 +02:00
.containerignore add containerfile 2024-05-10 17:09:07 +02:00
.gitignore bare bones calibre db reading 2024-05-01 16:21:07 +02:00
Cargo.lock bring back full covers if needed 2024-06-26 22:35:03 +02:00
Cargo.toml bring back full covers if needed 2024-06-26 22:35:03 +02:00
Containerfile bring back full covers if needed 2024-06-26 22:35:03 +02:00
COPYING correct license file name 2024-05-10 17:25:13 +02:00
deny.toml update yanked version of libc 2024-06-26 16:17:08 +02:00
flake.lock remove musl building with nix for now, clashes with the build script 2024-05-10 22:42:14 +02:00
flake.nix remove musl building with nix for now, clashes with the build script 2024-05-10 22:42:14 +02:00
README.md bring back full covers if needed 2024-06-26 22:35:03 +02:00
screenshot.jpg screenshot of new version 2024-06-26 14:21:50 +02:00

Little Hesinde

I have been a long time user of cops and its fork in order to access my ebook collection in a nice way from a browser. My biggest use always has been the ODPS feed for getting all of that from within KOReader.

It so happened that exactly when I was looking for a small side project I also had trouble with a new cops version (not through their fault, only because I insist on writing my own containers). How hard can it be I thought and went on hacking something together. The result does at most one tenth of what cops can do but luckily enough it is the part I need for myself.

Screenshot

Building

Nix

A nix environment with enabled nix-commands in order to use nix develop.

Run nix develop to be dropped into a shell with everything installed and configured. From there all the usual cargo commands are accessible.

Classic

A recent rust installation is all that is needed.

From there on cargo run and cargo build and so on can be used.

Configuration

Usage: little-hesinde [OPTIONS] -- <LIBRARY_PATH>

Arguments:
  <LIBRARY_PATH>  Calibre library path [env: LIBRARY_PATH=]

Options:
  -l, --listen-address <LISTEN_ADDRESS>
          Address to listen on [env: LISTEN_ADDRESS=] [default: [::1]:3000]
  -c, --cache-path <CACHE_PATH>
          Cache path ($TMP cascades through $XDG_CACHE_HOME, $TMPDIR and /tmp) [env: CACHE_PATH=] [default: $TMP/little-hesinde]
  -h, --help
          Print help
  -V, --version
          Print version

Example: little-hesinde -l [::]4000 -- ~/Documents/library/

Usage

Run the binary with the calibre library as an argument and open http://localhost:3000 (or wherever it should be accessible). http://localhost:3000/opds is the entry point for the OPDS feed.

FAQ

No authentication?

Not planned, put a reverse proxy in front of it that handles access.

Putting in your search text and you are done. Searching is done on title, tags, author, series title, identifiers and comments.

For more sophisticated queries take a look at the fts5 documentation.

Why are the OPDS entries not paginated?

My hardware (a Kobo Aura One from ~2016) with KOReader works perfectly fine with parsing the 1MB book feed from my own library. Once that changes I might get over my laziness and implement it.

Aren't these database access patterns inefficient?

They most probably are but my elaborate testing setup (my own calibre library) works fine with it.

Why rust?

I like the language and wanted to try the poem framework.

Is it webscale?

Go away.