A command line interface for audible package. With the cli you can download your Audible books, cover, chapter files.
Find a file
mkb79 5c5be364f8
Update file path type in wishlist export command #219 (#220)
Modified the `--output` option to use `pathlib.Path` for type safety and consistency. This ensures better integration with modern Python path handling.
2025-09-12 07:04:46 +02:00
.github Rework gh action build (#232) 2025-08-14 19:28:57 +02:00
assets Rework README (#243) 2025-09-03 11:42:31 +02:00
docs
plugin_cmds fix: plugin decrypt rebuild-chapters without -c (#205) 2024-05-02 21:49:03 +02:00
src/audible_cli Update file path type in wishlist export command #219 (#220) 2025-09-12 07:04:46 +02:00
utils
.gitignore
audible.spec
CHANGELOG.md Refactor bunch size option (#241) 2025-09-01 11:44:29 +02:00
DESCRIPTION.md Rework README (#243) 2025-09-03 11:42:31 +02:00
LICENSE
pyi_entrypoint.py
pyproject.toml Rework README (#243) 2025-09-03 11:42:31 +02:00
README.md Rework README (#243) 2025-09-03 11:42:31 +02:00
test.py
uv.lock Rework README (#243) 2025-09-03 11:42:31 +02:00

audible-cli

AUDIBLE-CLI

A powerful command-line tool for managing and downloading your Audible audiobooks.
Built with ❤️ in Python.


Features

  • 🔑 Manage multiple Audible accounts (profiles)
  • 📚 Browse and export your library and wishlist
  • 🎧 Download audiobooks in AAXC or AAX with metadata & chapters
  • Fast HTTP requests powered by httpx
  • 🛠️ Plugin system for custom commands & extensions
  • 💻 Cross-platform: Linux, macOS, Windows
  • 🚀 Prebuilt executables (no Python required)

📦 Installation

With uv tool (recommended)

uv tool install audible-cli

With uvx

uvx --from audible-cli audible

From PyPI

pip install audible-cli

From GitHub

git clone https://github.com/mkb79/audible-cli.git
cd audible-cli
pip install .

🖥️ Standalone executables

Dont want to install Python?
Prebuilt binaries are available on the releases page.

⚠️ On Windows, prefer the onedir build for faster startup.


🚀 Quickstart

  1. Run the interactive setup:

    audible quickstart
    

    → creates config, profile, and auth file.

  2. List your library:

    audible library list
    
  3. Download your entire library:

    audible download --all --aax
    

📚 Common use cases

Goal Command
List all audiobooks audible library list
Export library to JSON audible library export --output library.json
Add to wishlist audible wishlist add --asin B004V00AEG
Download since date audible download --start-date "2023-01-01" --aaxc --all
Switch profile audible -P germany library list

⚙️ Configuration & Profiles

App directory

audible-cli stores its configuration files in an app directory.

OS Path
Windows C:\Users\<user>\AppData\Local\audible
Linux ~/.audible
macOS ~/.audible

You can override this by setting the environment variable:

export AUDIBLE_CONFIG_DIR=/path/to/dir

Config file

  • Name: config.toml
  • Format: TOML
  • Structure:
    • [APP] section → global defaults
    • [profile.<name>] section → settings per Audible account

Example:

[APP]
primary_profile = "default"
filename_mode   = "ascii"
chapter_type    = "tree"

[profile.default]
auth_file    = "auth.json"
country_code = "us"

[profile.germany]
auth_file    = "auth_de.json"
country_code = "de"

Profiles

  • Each profile corresponds to an Audible account or marketplace
  • Contains:
    • auth_file → authentication file
    • country_code → Audible marketplace (us, de, uk, …)
  • Switch profiles with:
audible -P germany library list

The [APP].primary_profile is used if no profile is specified.


Auth files

  • Stored in the same app directory as the config file
  • Can be password-protected:
audible -p "mypassword" download --asin <ASIN>
  • If no password is passed, you will be prompted with hidden input

Config options

🔧 APP section

  • primary_profile: default profile if none is specified
  • filename_mode: filename handling for downloads
    • ascii (default)
    • override with --filename-mode
  • chapter_type: chapter format for downloads
    • tree (default)
    • override with --chapter-type

👤 Profile section

  • auth_file: authentication file for this profile
  • country_code: Audible marketplace
  • filename_mode: overrides [APP].filename_mode
  • chapter_type: overrides [APP].chapter_type

🧩 Built-in commands

  • activation-bytes → Manage DRM activation keys
  • api → Call raw Audible API endpoints
  • download → Download audiobooks
  • library → List, export your library
  • wishlist → Manage wishlist (list, add, remove, export)
  • manage → Profiles, configs, auth-files
  • quickstart → Interactive setup

Show help:

audible <command> -h

🔧 Plugins & Extensions

Custom plugin commands

Create a file in the plugin folder, e.g. cmd_hello.py:

import click

@click.command(name="hello")
def cli():
    click.echo("Hello from plugin!")

Important: A custom plugin must start with the prefix cmd_. The loader scans for cmd_*.py files and attaches each command to the CLI.

Run:

audible hello

Plugin packages

You can also distribute plugins as Python packages via entry points.
The entry point group is audible.cli_plugins.

Example: pyproject.toml

[project]
name = "audible-myplugin"
version = "0.1.0"
dependencies = ["audible-cli", "click"]

[project.entry-points."audible.cli_plugins"]
my_command = "myplugin.cli:my_command"
another    = "myplugin.cli:another"

After installation, your plugin commands will automatically be available in audible:

audible my-command
audible another

🔊 Verbosity

Control logging output:

audible -v debug library list
audible -v error download --all

Levels: debug, info, warning, error, critical
Default: info


🧩 Add-ons

Want your add-on listed? → Open a PR or issue 🚀


🤝 Contributing

Contributions welcome!

  • File issues
  • Open pull requests
  • Share plugins and add-ons

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
See LICENSE for details.