Repository navigation
Features
Library sync
- Syncs your Audible library into a local database, and on each run fetches only what's new
- Tracks the state of every book (waiting, downloading, downloaded, failed), so a re-run picks up exactly where it left off
- Records every sync run. when it started and finished, how many books were seen, added, downloaded and failed
- Titles Audible has withdrawn from Premium library are parked automatically instead of failing every run, and rejoin the queue on their own if Audible offers them again
Download and decrypt
- Downloads the audiobooks you own and decrypts them to DRM-free files
- M4B by default, the original AAC audio is copied straight through, so there's no re-encode and no quality loss
- Ogg Opus (
.oga) optionally, at a bitrate you choose (1–256 kbps), for much smaller files at the same perceived quality for speech - Downloads the companion PDF, high-resolution cover art and your annotations alongside each book
- Live progress bars for every transfer, each named with the book it belongs to
Metadata, cover art and chapters
- Embeds title, subtitle, authors, narrators, series name and position, genre, release year and ASIN
- Cover art and full chapter markers embedded in both formats
- Series data written as iTunes freeform tags in M4B and as Vorbis comments in Ogg, so Audiobookshelf, VLC, Foobar2000 and most taggers read them
File naming
- Configurable folder and filename templates, with placeholders for author, narrator, title, subtitle, series, sequence, year and ASIN
- Optional template sections are dropped when empty, so a standalone book is filed sensibly without an empty series folder
- Every name is made safe for Linux, macOS, Windows and SMB shares
- Two different books that would produce the same filename are kept apart instead of one silently overwriting the other
Reliability
- A book that fails is skipped and retried on later runs, up to a configurable limit, then left alone with the reason recorded
- A download abandoned by a crashed or killed run is picked back up automatically once it goes stale
- Safe to run more than once at a time: each book is claimed before work starts, so two runs never download the same book
- A failure that isn't the book's fault (expired credentials, say) doesn't count against that book's retries
Setup and configuration
- Single
config.inifor download limits, folders, naming and encoding - Paths can be absolute or relative, and relative paths resolve against the app folder, so the app behaves identically whatever directory you start it from
- Official Docker image with a
compose.yml, roll your own with the Dockerfile or run directly with Python