crabidy/absdy/README.md

2.1 KiB

absdy — audiobookshelf provider

Mounts a self-hosted audiobookshelf (ABS) server at /abs, so you can browse, search, and play your audiobooks from crabidy. See the design doc for the design and decisions.

Configuration — ~/.config/crabidy/abs.toml

The provider needs your server URL and an API key. Without both, /abs does not mount (the rest of the server is unaffected).

# 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

Create an API key in audiobookshelf under Settings → Users → (your user) → API Keys (or Settings → API Keys on older versions). The key is a secret: it is redacted from logs and never printed, but keep abs.toml private anyway.

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.