Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

env:
PYTHON_VERSION: "3.13"
PYTHON_VERSION: "3.14"

jobs:
create_release:
Expand All @@ -33,47 +33,47 @@ jobs:
- os: ubuntu-latest
TARGET: linux
CMD_BUILD: >
uv run pyinstaller --clean -F --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -F --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
zip -r9 audible_linux_ubuntu_latest audible
OUT_FILE_NAME: audible_linux_ubuntu_latest.zip
ASSET_MIME: application/zip # application/octet-stream
- os: ubuntu-22.04
TARGET: linux
CMD_BUILD: >
uv run pyinstaller --clean -F --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -F --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
zip -r9 audible_linux_ubuntu_22_04 audible
OUT_FILE_NAME: audible_linux_ubuntu_22_04.zip
ASSET_MIME: application/zip # application/octet-stream
- os: macos-latest
TARGET: macos
CMD_BUILD: >
uv run pyinstaller --clean -F --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -F --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
zip -r9 audible_mac audible
OUT_FILE_NAME: audible_mac.zip
ASSET_MIME: application/zip
- os: macos-latest
TARGET: macos
CMD_BUILD: >
uv run pyinstaller --clean -D --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -D --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
zip -r9 audible_mac_dir audible
OUT_FILE_NAME: audible_mac_dir.zip
ASSET_MIME: application/zip
- os: windows-latest
TARGET: windows
CMD_BUILD: >
uv run pyinstaller --clean -D --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -D --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
powershell Compress-Archive audible audible_win_dir.zip
OUT_FILE_NAME: audible_win_dir.zip
ASSET_MIME: application/zip
- os: windows-latest
TARGET: windows
CMD_BUILD: >
uv run pyinstaller --clean -F --hidden-import audible_cli -n audible -c pyi_entrypoint.py &&
uv run --extra cryptography pyinstaller --clean -F --hidden-import audible_cli --collect-all cryptography --collect-submodules audible.crypto_provider -n audible -c pyi_entrypoint.py &&
cd dist/ &&
powershell Compress-Archive audible.exe audible_win.zip
OUT_FILE_NAME: audible_win.zip
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pypi-publish-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:

env:
PYTHON_VERSION: "3.13"
PYTHON_VERSION: "3.14"

jobs:
build-n-publish:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:

env:
PYTHON_VERSION: "3.13"
PYTHON_VERSION: "3.14"

jobs:
build-n-publish:
Expand Down
9 changes: 7 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## Unreleased

# Added
### Added

- The `--page-size` option as a replacement for the now deprecated `--bunch-size` option.
- Optional `cryptography` extra (`pip install "audible-cli[cryptography]"`) that enables audible's Rust-accelerated crypto backend for faster cryptographic operations (activation bytes, AAX/AAXC decryption).
- Prebuilt release binaries now bundle the Rust-accelerated `cryptography` backend, statically linked via PyInstaller, so the standalone executables benefit from it out of the box.

##} Changed
### Changed

- The `--bunch-size` option is now deprected and will be replaced with option `--page-size` some releases later.
- Raised the minimum supported Python to `>=3.11,<3.15` (dropped Python 3.10, added 3.14).
- Bumped `audible` to `>=0.11.0` and `httpx` to `>=0.27.2,<0.29`.
- Raised minimum versions for `aiofiles`, `click`, `Pillow`, `tabulate`, `tqdm`, `questionary`, `packaging`, and `colorama`.

### Fixed

Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,29 @@ cd audible-cli
pip install .
```

**⚡ Faster crypto (optional)**

Install the optional `cryptography` extra to enable audible's Rust-accelerated
crypto backend. It noticeably speeds up cryptographic operations such as fetching
activation bytes and decrypting AAX/AAXC files:

```shell
pip install "audible-cli[cryptography]"
# or, when installed as a tool:
uv tool install "audible-cli[cryptography]"
```

Without the extra, audible-cli still works using the pure-Python fallback.

---

## 🖥️ Standalone executables

Don’t want to install Python?
Prebuilt binaries are available on the [releases page](https://github.com/mkb79/audible-cli/releases).

> ℹ️ The prebuilt binaries already **bundle the Rust-accelerated `cryptography` backend** (statically linked, no extra setup) — so cryptographic operations are fast out of the box.

- **Windows:** [onedir](https://github.com/mkb79/audible-cli/releases/latest/download/audible_win_dir.zip) (recommended), [onefile](https://github.com/mkb79/audible-cli/releases/latest/download/audible_win.zip)
- **Linux:** [Ubuntu 22.04](https://github.com/mkb79/audible-cli/releases/latest/download/audible_linux_ubuntu_22_04.zip), [latest](https://github.com/mkb79/audible-cli/releases/latest/download/audible_linux_ubuntu_latest.zip)
- **macOS:** [onefile](https://github.com/mkb79/audible-cli/releases/latest/download/audible_mac.zip), [onedir](https://github.com/mkb79/audible-cli/releases/latest/download/audible_mac_dir.zip)
Expand Down
34 changes: 20 additions & 14 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "audible-cli"
version = "0.3.3"
description = "Command line interface (cli) for the audible package."
authors = [{ name = "mkb79", email = "mkb79@hackitall.de" }]
requires-python = ">=3.10,<3.14"
requires-python = ">=3.11,<3.15"
readme = "DESCRIPTION.md"
license = "AGPL-3.0-only"
keywords = [
Expand All @@ -16,28 +16,33 @@ classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Affero General Public License v3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"aiofiles",
"audible>=0.8.2",
"click>=8",
"colorama; platform_system=='Windows'",
"httpx>=0.23.3,<0.28.0",
"packaging",
"Pillow",
"tabulate",
"toml",
"tqdm",
"questionary",
"aiofiles>=25.1.0",
"audible>=0.11.0",
"click>=8.4.2",
"colorama>=0.4.6; platform_system=='Windows'",
"httpx>=0.27.2,<0.29",
"packaging>=26.2",
"Pillow>=12.3.0",
"tabulate>=0.10.0",
"toml>=0.10.2",
"tqdm>=4.69.0",
"questionary>=2.1.1",
]
homepage = "https://github.com/mkb79/audible-cli"
repository = "https://github.com/mkb79/audible-cli"
documentation = "https://audible-cli.readthedocs.io/"

[project.optional-dependencies]
cryptography = [
"audible[cryptography]>=0.11.0",
]

[project.urls]
Changelog = "https://github.com/mkb79/audible-cli/releases"

Expand Down Expand Up @@ -84,6 +89,7 @@ exclude_lines = [
]

[tool.mypy]
python_version = "3.11"
pretty = true
show_column_numbers = true
show_error_codes = true
Expand All @@ -95,7 +101,7 @@ warn_unreachable = true
# missing rst-docstrings check, these should be adding through ruff
line-length = 88
src = ["src", "plugin_cmds", "utils"]
target-version = "py310"
target-version = "py311"
output-format = "grouped"

[tool.ruff.lint]
Expand Down
Loading
Loading