media: match new audiobooks against Audible nightly and on import #387
No reviewers
Labels
No labels
audit-work
bug
docs
general-admin
major-upgrade
needs-vps-sync
new-service
on-hold
outside-work
post-podman
renovate
upstream
vps
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mysticalsoap/docker!387
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/audiobookshelf-match"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Audiobookshelf only reads what a release's tags carry, and the title comes from the
albumtag, so the same series arrived asDungeon Crawler Carl, Book 2 - Carl's Doomsday Scenario,The Butcher's Masquerade: Dungeon Crawler Carl, Book 5andDungeon Crawler Carl (Unabridged). Audible has title, subtitle, description and cover separated, but a Match is a click per book (#379). Folder naming (#384) solved series and sequence, not titles.Fix
media/metadata/audiobookshelf_match.py: runs the library's Match Books for every book library through the API; the library's "skip matching media with ASIN" keeps identified items out, so a run is idempotent; errors over ntfy.dagu/dags/audiobookshelf-match.yaml: nightly at 00:30 in the metadata container (the only job container on the media network; dagu-tools is not), with a 90 s wait.media/metadata/bookshelf_audio_import_hook.shplus the mounts on bookshelf-audio: Readarr's On Release Import enqueues the same DAG, same shape as the Lidarr hook. The wait covers Readarr firing before the watcher has added the item; a match and a scan exclude each other, so a miss falls through to 00:30.media/metadata/secrets/added to the backup set (it already held the ntfy and Jellyfin keys)..gitignorenames the retag beets files instead of the deleted overhaul's.Investigated and rejected: an Audiobookshelf-side trigger (no item-added event exists; upstream #3464 is still open) and tag writing from Readarr (no series/narrator/ASIN fields, in-place writes through the seed hardlink).
Verification
Live, 2026-10-07:
Download). The Dagu secret mount is owned by the app user, 600.30 0 * * *, one step). First enqueued run failed on the match endpoint's plain-textOKreply; fixed, then a direct run printsaudiobooks: match started (HTTP 200)and a second enqueued run succeeded (18:55:20 → 18:56:51, the 90 s wait included).The Butcher's Masquerade/Dungeon Crawler Carl, Book 5), all eight now carry an ASIN, series and sequence unchanged. Book 1 keptDungeon Crawler Carl (Unabridged): it shipped an ASIN in its tags, so "skip ASIN" excludes it by design; one manual Quick Match.Closes #379
🤖 Generated with Claude Code