โ— PHANTOM
๐Ÿ‡ฎ๐Ÿ‡ณ IN
โœ•
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

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 18