Skip to content

A command line interface for audible package. With the cli you can download your Audible books, cover, chapter files.

License

Notifications You must be signed in to change notification settings

mkb79/audible-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

Don’t 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.

About

A command line interface for audible package. With the cli you can download your Audible books, cover, chapter files.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 16