67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
# 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 = "<your audiobookshelf 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
|
|
└── <library> one node per "book" library
|
|
├── search create a search term with `%`
|
|
│ └── <term> books matching the term
|
|
│ └── <book> the book's audio files as tracks
|
|
└── <book> an audiobook; its files are tracks
|
|
└── <file> 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.
|