Skip to content

rgarber11/YetAnotherAudiobookConverterScript

Repository files navigation

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.

About

A script to convert audiobooks to opus

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages