Skip to content

v1.0.0

Latest

Choose a tag to compare

@AlexStansfield AlexStansfield released this 10 Sep 03:45
· 9 commits to dev since this release
6bc5a44

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.ini for 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