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
Installation
YAACS depends on the following packages for conversion:
- mkvtoolnix for CUE file chapter parsing
- FFmpeg for metadata detection and conversion
- opustags for cover image insertion.
However, YAACS does not depend on any python packages. As such, it can be installed via your preferred Python package manager, or simply run directly without installation.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaacs-1.4.0.tar.gz.
File metadata
- Download URL: yaacs-1.4.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64a0ccc6ab3640895b726776aaac689ac27bbd8e329c657ac8485026f0cfe2c1
|
|
| MD5 |
7c8347904d2b379e4381028b6c31aea3
|
|
| BLAKE2b-256 |
a0f2243815a28dc23ee38ed6cd849c2f265e334380fbd75e08d13fc1c5687332
|
Provenance
The following attestation bundles were made for yaacs-1.4.0.tar.gz:
Publisher:
python-publish.yml on rgarber11/YetAnotherAudiobookConverterScript
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yaacs-1.4.0.tar.gz -
Subject digest:
64a0ccc6ab3640895b726776aaac689ac27bbd8e329c657ac8485026f0cfe2c1 - Sigstore transparency entry: 206490087
- Sigstore integration time:
-
Permalink:
rgarber11/YetAnotherAudiobookConverterScript@4f844866fd6ae23ba4612e99a5d94cf599ede8bf -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/rgarber11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4f844866fd6ae23ba4612e99a5d94cf599ede8bf -
Trigger Event:
release
-
Statement type:
File details
Details for the file yaacs-1.4.0-py3-none-any.whl.
File metadata
- Download URL: yaacs-1.4.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfe34ffa6de5efbd253e6dd094ab74c786b8b66cc26a692d44e2e14adfad7588
|
|
| MD5 |
0e693c356ee69df55941eb3972300dc8
|
|
| BLAKE2b-256 |
a9c19d37bbf2d9016858ad55f0215389cea287b3f5712c55f8f682bd0f1c266a
|
Provenance
The following attestation bundles were made for yaacs-1.4.0-py3-none-any.whl:
Publisher:
python-publish.yml on rgarber11/YetAnotherAudiobookConverterScript
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yaacs-1.4.0-py3-none-any.whl -
Subject digest:
dfe34ffa6de5efbd253e6dd094ab74c786b8b66cc26a692d44e2e14adfad7588 - Sigstore transparency entry: 206490088
- Sigstore integration time:
-
Permalink:
rgarber11/YetAnotherAudiobookConverterScript@4f844866fd6ae23ba4612e99a5d94cf599ede8bf -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/rgarber11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4f844866fd6ae23ba4612e99a5d94cf599ede8bf -
Trigger Event:
release
-
Statement type: