crabidy/absdy/README.md

2.6 KiB

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.