little-hesinde/README.md
Sebastian Hugentobler f4ee1c19ec
Some checks failed
Build Multiarch Container Image / call-reusable-workflow (push) Failing after 1s
make screenshot in readme smaller
2024-05-11 09:30:30 +02:00

76 lines
2.3 KiB
Markdown

# Little Hesinde
I have been a long time user of [cops](https://github.com/seblucas/cops) and its
[fork](https://github.com/mikespub-org/seblucas-cops) in order to access my
ebook collection in a nice way from a browser. My biggest use always has been
the [ODPS](https://en.wikipedia.org/wiki/Open_Publication_Distribution_System)
feed for getting all of that from within [KOReader](https://koreader.rocks/).
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](screenshot.jpg)
# Building
## Nix
A [nix](https://nixos.org/download/) environment with enabled
[nix-commands](https://nixos.wiki/wiki/Flakes) 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](https://www.rust-lang.org/learn/get-started) installation is all
that is needed.
From there on `cargo run` and `cargo build` and so on can be used.
# Configuration
The binary takes exactly one argument, the path to the calibre library folder.
The listening port is hardcoded to `3000` for now, as is the listening on all
interfaces.
# 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.
## No search?
On my todo list once I feel like I need it.
## 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](https://github.com/poem-web/poem) framework.
## Is it webscale?
Go away.