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

kp-forks/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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Shell 0.1%