crabidy/absdy
Test User ab3bd7c63a docs: bring the book and every README up to date
The docs drifted behind three changes: the /queues + /bookmarks +
/captures split folding into one /crabidy provider, three providers
arriving (soundcloud, jamendo, abs) with nothing written about them, and
the spectrum toggle moving off v to f when library visual mode took v/V.

- The book gains a page per undocumented provider — /soundcloud,
  /jamendo, /abs — each with its tree, its playback path, every config
  option, and how to log in. The providers index and intro list all nine
  roots in the order the server actually serves them.
- Every provider now documents its login: Tidal's device flow (and that
  a broken tidaly.toml is the one fatal provider config), audiobookshelf
  API keys, the optional SoundCloud token and where to read it out of a
  browser, YouTube cookie exports, Jamendo's shipped key, and "nothing
  to do" for fyyd and /fs.
- fsdy's README described three server-managed mounts under
  ~/.config/crabidy that have not existed for a while; it now describes
  /crabidy over the state dir plus the shared content store, and how
  deletes there never touch store audio.
- Stale /captures/<name> save paths in the tidaldy and ytdy READMEs are
  /crabidy/<name>. The TUI key table, the README walkthrough, and the
  spectrum section use f, and visual mode (v/V) is documented.
- config.md and the README list all seven provider config files, say
  plainly that credentials are stored in cleartext, and cover the audio
  output device; the CLI page documents audio-devices and features.
- No README or docs page references architecture/, quality/, or plan/
  any more: the book describes the system as it is, and points at the
  crate READMEs for usage and config.
- devenv-docs.nix was never committed even though devenv.nix imports it,
  so a fresh clone could not enter the shell at all. It is in now, which
  also makes the README's `devenv shell -- docs` work.

Also fixes two ./store.md links in providers/fs.md that pointed one
directory too shallow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 11:04:25 +02:00
..
src Add the audiobookshelf provider (`/abs`) 2026-07-23 23:22:52 +02:00
tests Add the audiobookshelf provider (`/abs`) 2026-07-23 23:22:52 +02:00
Cargo.toml Add the audiobookshelf provider (`/abs`) 2026-07-23 23:22:52 +02:00
README.md docs: bring the book and every README up to date 2026-07-25 11:04:25 +02:00

README.md

absdy — audiobookshelf provider

Mounts a self-hosted audiobookshelf (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

# 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

/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.