Skip to content

Conversation

@juchong
Copy link

@juchong juchong commented Feb 9, 2026

Adds optional Readarr integration so ABR can hand off book requests to Readarr (or compatible forks like Bookshelf) for the full download-to-library pipeline. Closes #116

What this does

When Readarr is configured in Settings, new book requests are immediately sent to Readarr as a background task. Readarr handles searching, grabbing, downloading, importing, renaming, and organizing files. If Readarr is not configured, the existing Prowlarr auto-download flow is unchanged.

  • New settings page (Settings > Readarr) for configuring the connection, quality profile, metadata profile, and root folder.
  • Readarr search/add client that matches Audible books to Readarr metadata by title and author, adds new books, or triggers searches for existing ones.
  • On successful Readarr add, the book is marked as downloaded and an ABS library scan is triggered.
  • Fallback to Prowlarr in query_sources and download_book if the Readarr path fails.
  • Pydantic models with extra="allow" for Readarr API responses, following the existing Prowlarr typing patterns (TypeAdapter, strict basedpyright).

What changed

  • app/internal/readarr/ — new package: client.py, config.py, types.py
  • app/routers/api/settings/readarr.py — API endpoints for Readarr settings
  • app/routers/pages/settings/readarr.py — HTMX page routes
  • templates/pages/Settings/Readarr.jinja — settings UI
  • templates/layouts/SettingsLayout.jinja — added Readarr tab
  • app/routers/api/requests.py — immediate Readarr handoff in create_request
  • app/internal/query.py — Readarr-first path in query_sources for manual auto-download, increased client timeout to 300s
  • README.md — documentation for setup and behavior

Checks

  • basedpyright: 0 errors, 0 warnings, 0 notes
  • ruff format --check app: all files formatted
  • No new database models; no migrations needed

juchong and others added 5 commits February 9, 2026 12:49
Add optional Readarr support so ABR can add books to Readarr and
trigger indexer searches, letting Readarr handle the full
download/import/rename pipeline. When configured, ABR tries Readarr
first and falls back to the direct Prowlarr download path on failure.

Uses the /api/v1/search endpoint (same as pyarr) which returns book
results with the full author object, avoiding the need for a separate
author lookup. Books are matched by title and author name to handle
cases where multiple books share the same title.

New settings tab under Settings > Readarr for base URL, API key,
quality/metadata profile, root folder, and search-on-add toggle.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…on_add toggle

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Readarr Integration

1 participant