# absdy — audiobookshelf provider Mounts a self-hosted [audiobookshelf](https://www.audiobookshelf.org/) (ABS) server at `/abs`, so you can browse, search, and play your audiobooks from crabidy. Audiobooks only for now — podcast libraries on the ABS server are not listed. ## Logging in The provider needs your server URL and an **API key**; without both, `/abs` does not mount (the rest of the server is unaffected). 1. Open the audiobookshelf web UI as the user whose libraries you want. 2. **Settings → Users → (your user) → API Keys** (older versions: **Settings → API Keys**) and create a key. 3. Put it in `abs.toml` (below) and restart the server. There is no interactive login and no token to refresh — the API key is a long-lived bearer token. Revoke it in the same screen to cut access. ## Configuration — `~/.config/crabidy/abs.toml` ```toml # Required. base_url = "https://audiobookshelf.example.com" api_key = "" # Optional (defaults shown). items_per_library = 200 # books listed per library search_results = 50 # books listed per search term call_timeout_secs = 30 # per-request timeout ``` The key is a secret: it is redacted from logs and never printed, but keep `abs.toml` private anyway (it is stored in cleartext). ## The library tree ```text /abs └── one node per "book" library ├── search create a search term with `%` │ └── books matching the term │ └── the book's audio files as tracks └── an audiobook; its files are tracks └── a track (one audio file) ``` - A **library** lists its books plus a creatable `search` node. Search is per-library — a term created under one library does not appear under another. - A **book** lists its audio files as tracks; queue or capture (`W`) the whole book, or a single file. An ebook-only item (no audio) is shown but is not queueable. - Podcast libraries are not shown (audiobooks only, for now). ## Notes - Playback streams each file directly from ABS with a per-file token URL and HTTP range requests — no transcoding session. - Listings are capped (see the config) and fetched fresh; only your typed search terms are remembered, in memory, until the server restarts. - Many audiobookshelf libraries store Opus audio, which needs the server's `opus` cargo feature (on by default). - Build the server without the `abs` cargo feature to leave this provider out of the binary entirely.