Based on Harmonize by nvllsvm https://github.com/nvllsvm/harmonize
Create and synchronize transcoded copies of audio folders.
- Can transcodes FLAC, M4A and MP3 files to Opus or MP3 with tags
- Hardlink, symbolic link or Copy everything else as-is
- Parallelized
- Additional runs synchronize changes since the initial run
- Configurable encoders
- Add hardlink option (instead of copying the extra files)
- Add symbolic link option (instead of copying the extra files)
- Add m4a (mp4) as input source for transcoding
- Add mp3 as input source for transcoding (from nvllsvm's branch)
- Make transcoding flac optional
- Make transcoding m4a optional
- Make transcoding mp3 optional
- Make sanitizing optional (allows syncing multiple sources to one target)
- Make variables available as Docker Environment Variables
- Add docker compose example with all variables
- Remove "raise asyncio.subprocess.CalledProcessError" since asyncio.subprocess doesn't have CalledProcessError
- Add primitive error reporting in place of above
- No premade container is available so you will need to build it yourself
- Download the contents of the repository
- Open the location in a terminal
docker compose build
- For a complete docker compose file with all options see the included docker-compose.yml
Minimal docker compose file
services:
harmonize:
container_name: harmonize
build:
context: ./
dockerfile: Dockerfile
user: 1000:1000 # Should match your user
environment:
PUID: 1000 # Should match your user
PGID: 1000 # Should match your user group
volumes: # To use Hardlinks all files must be on the same mount point, Bind locations will not work.
- /mnt:/mnt # mount_location:virtual_location # The virtual location must match the mount location
command:
- "/mnt/Music" # absolute path to source folder, must be inside the mapped volume above
- "/mnt/Music-opus" # absolute path to target folder, must be inside the mapped volume above
- Be sure to build it first
- Be sure to setup the paths in the docker compose file
docker compose up
To run in the background
docker compose up -d
usage: harmonize [-h] [--codec {mp3,opus}] [-n NUM_PROCESSES] [-q]
[--hardlink {True,False}] [--softlink {True,False}]
[--cleanup {True,False}] [--convflac {True,False}]
[--convm4a {True,False}] [--convmp3 {True,False}] [--version]
[--exclude PATTERN]
source target
positional arguments:
source Source directory
target Target directory
options:
-h, --help show this help message and exit
--codec {mp3,opus} codec to use for output. encoder configuration may be
specified as additional arguments to harmonize
-n NUM_PROCESSES Number of processes to use
-q, --quiet suppress informational output
--hardlink {True,False} use hardlinks instead of copying the extra files
--softlink {True,False} use symbolic links instead of copying the extra files
--cleanup {True,False} remove files not found in the source
--convflac {True,False} convert flac files to output codec
--convm4a {True,False} convert m4a files to output codec
--convmp3 {True,False} convert mp3 files to output codec
--version show program's version number and exit
--exclude PATTERN ignore files matching this pattern