Split FLAC files into individual tracks based on CUE sheets
Project description
flac-cue-split
Split single-file FLAC albums into individual tracks using CUE sheets.
Perfect for Plex users: Plex and other media servers don't support CUE sheets, so albums ripped as a single FLAC file won't display individual tracks. This tool splits them into separate files with proper metadata so Plex can index each track correctly.
Features
- Recursively searches directories for FLAC + CUE pairs
- Automatic CUE file encoding detection (UTF-8, Latin-1, Shift-JIS, etc.)
- Skips albums that are already split
- Safe dry-run by default - see what would happen before committing
- Prompts before deleting source files
- Preserves CUE files after splitting
Requirements
- Python 3.12+
- ffmpeg installed and in PATH
- Ubuntu/Debian:
sudo apt install ffmpeg - macOS:
brew install ffmpeg - Windows: Download from ffmpeg.org and add to PATH
- Ubuntu/Debian:
Installation
# Using uv (recommended)
uv tool install flac-cue-split
# Using pipx
pipx install flac-cue-split
# Using pip
pip install flac-cue-split
Usage
# Dry run - see what would be split
flac-cue-split /path/to/music
# Actually split the files
flac-cue-split /path/to/music --execute
# Split and delete original FLAC files (prompts for each)
flac-cue-split /path/to/music --execute --delete
# Split and delete without prompts
flac-cue-split /path/to/music --execute --delete --yes
# Delete sources for already-split albums
flac-cue-split /path/to/music --delete --yes
Example Output
Found 2 album(s) in Music/
1. The Elder Scrolls V: Skyrim - Atmospheres
Jeremy Soule | 2 tracks | 42m 54s
_Game OST/_Elder Scrolls/Jeremy Soule - Skyrim - Atmospheres/
2 tracks extracted
Delete original FLAC? [Y/n]
2. Dark Side of the Moon
Pink Floyd | 10 tracks | 42m 59s
Pink Floyd/1973 - Dark Side of the Moon/
10 tracks extracted
Delete original FLAC? [Y/n]
Done
Output Format
Tracks are saved as {nn}. {track_name}.flac where the number is zero-padded based on total track count (e.g., 01. for <100 tracks, 001. for 100-999, etc).
Options
| Option | Description |
|---|---|
--execute |
Actually perform the split (default is dry-run) |
--delete |
Delete original FLAC files after splitting (prompts for confirmation) |
--output, -o |
Output directory for split files (default: same as source) |
--verbose, -v |
Show detailed track listings |
--yes, -y |
Auto-confirm prompts (use with --delete) |
Safety
- Dry-run by default: Nothing is modified unless you pass
--execute - Deletion prompts:
--deleteasks for confirmation unless--yesis specified - Error protection: Source files are kept if any extraction errors occur
- Permanent deletion:
--deletepermanently removes files (not moved to trash)
License
MIT
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 flac_cue_split-0.1.2.tar.gz.
File metadata
- Download URL: flac_cue_split-0.1.2.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b22e18b73ea117c0d4a57f2e8ad48797956658e8e5373590a98f2414c501d43
|
|
| MD5 |
c9dabbd0858aa8e8ee9db6715b81f3cc
|
|
| BLAKE2b-256 |
0ccc79f921d6c9de536591e8a8cc1bcecf9e154ea5e8afafa80a390467886b1b
|
File details
Details for the file flac_cue_split-0.1.2-py3-none-any.whl.
File metadata
- Download URL: flac_cue_split-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
728bb6587053c0a318f8a8884b7d1afea475383c7843a9a6de919ba062483374
|
|
| MD5 |
dcca574d20e9186a0981b96add0f5b4e
|
|
| BLAKE2b-256 |
22c681c2c2c8f69f0d527d916e773629e6b0b4a4a73f588fec7e425e5655e355
|