Skip to main content

Convert your audiobooks to opus to save space while maintaining quality.

Project description

YAACS


Convert your audiobooks to .opus for smaller files at equivalent quality.

Features

  • Automatic bitrate selection
  • (opt-in) Automatic audiobook discovery
  • Automatic cover image discovery
  • Automatic chapter discovery
  • (opt-in) Automatic deletion of input files
  • Multiprocessing to increase conversion throughput

Dependencies

YAACS depends on the following system packages for conversion:

  • FFmpeg for metadata detection and conversion

YAACS also depends on the following Python packages for conversion:

  • Mutagen for cover image installation

Building YAACS depends on the following Python packages:

  • Lark for generating CUE parser code.
  • Setuptools for creating the final Python wheel.
  • Build as a standardized Python build frontend.

Building

Prepackaged versions of YAACS are available in this repo. However, building YAACS is also possible.

  1. First, setup a build environment. If you are confused, an example of how to do this is given below:
python -m venv venv
source venv/bin/activate # (bash/zsh) command to activate Virtual Environment
venv\Scripts\activate.bat # Windows cmd.exe command to activate Virtual Environment
  1. Next, install YAACS' dev dependencies:
pip install -r requirements-dev.txt # Installs the lark parser, along with build software for Python
  1. Now, you can run the standardized Python build command.
python -m build
  1. And lastly you can install YAACS.
pip install dist/yaacs-2.0.0-py3-none-any.whl # Note that your version of YAACS may generate a differently named file.

Installation

YAACS is available for installation via PyPI and on the AUR. Feel free to package YAACS for other systems!

Usage

$ yaacs -h
usage: yaacs [-h] [-v] [-t THREADS] [(-i INPUT [INPUT ...] | -a LOCATION [LOCATION ...]) [-x] [-o OUTPUT] [-m METADATA | -M METADATACHAPTER] [-b BITRATE] [-c CUESHEET] [-I COVER]]+

A Script to convert audiobooks to .opus

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -t THREADS, --threads THREADS
                        Number of subprocesses to spawn to convert books. Not specifying or 0 will default to core count.
  -i INPUT [INPUT ...], --input INPUT [INPUT ...]
                        Locations of files for conversion. If this is a directory, all audio files recursively contained will be merged into one file.
  -a LOCATION [LOCATION ...], --auto LOCATION [LOCATION ...]
                        Locations to auto-convert. Will recursively search for subfolders which contain no other directories and contain audio file(s). These files will be converted/merged.
  -x, --delete          Delete input files after conversion. DO NOT USE THIS IF YOU DON'T HAVE COMPLETE CONFIDENCE IN THIS TOOL.
  -o OUTPUT, --output OUTPUT
                        Set output file name. Defaults to the name of the first input file with a .opus extension
  -m METADATA, --metadata METADATA
                        FFMETADATA file containing desired final metadata. Use -M if the metadata also contains chapter information
  -M METADATACHAPTER, --metadatachapter METADATACHAPTER
                        FFMETADATA file containing desired final metadata along with chapter data. Use -m to preserve automatic chapter detection.
  -b BITRATE, --bitrate BITRATE
                        Set bitrate for output file. Defaults to 32kbps for inputs under 192kbps, and 192kbps for inputs above that threshold.
  -c CUESHEET, --cuesheet CUESHEET
                        Set location for cuesheet file to read for chapter data. Only works if the input is a singular file.
  -I COVER, --cover COVER
                        Explicitly set final cover file. Will attempt to autodiscover cover if not set.
$ yaacs -a ~/Audiobooks -x # Automatically detect all audiobooks (folders with no subfolders containing audio files) in ~/Audiobooks and convert them. Delete after conversion.
$ yaacs -i Warbreaker -m warbreaker.ffmeta -b 64k # Convert the audiobook within the Warbreaker folder at a bitrate of 64kbps. Use the warbreaker.ffmeta file for metadata, but still auto-detect chapters.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yaacs-2.1.1.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yaacs-2.1.1-py3-none-any.whl (59.1 kB view details)

Uploaded Python 3

File details

Details for the file yaacs-2.1.1.tar.gz.

File metadata

  • Download URL: yaacs-2.1.1.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yaacs-2.1.1.tar.gz
Algorithm Hash digest
SHA256 5772dd981b35e49573f9da7a782de2859d5b0335b0c40c66e1a118446888e0e6
MD5 4f2c9ebf00af190035b02c1bdbfb115d
BLAKE2b-256 55f8e2f59eb166f2a64d0a9826a1e31f90cf221e8a453905d7caff0080c37cde

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaacs-2.1.1.tar.gz:

Publisher: make-new-release.yml on rgarber11/YetAnotherAudiobookConverterScript

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yaacs-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: yaacs-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 59.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yaacs-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fbb98e807f38b9835ab3a6edfc85bd489274ea9784a5890d42efa70b7791e594
MD5 f7ce9f0d586d2645b7ac7cdf56de984d
BLAKE2b-256 c7a07944f5d91e824f92ef73874945a48527432c3cae10441e0a31b51c2924c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaacs-2.1.1-py3-none-any.whl:

Publisher: make-new-release.yml on rgarber11/YetAnotherAudiobookConverterScript

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page