Skip to main content

Create and synchronize transcoded copies of audio folders

Project description

PyPI Version

Create and synchronize transcoded copies of audio folders.

  • Transcodes FLAC files to MP3 with tags

  • Copies everything else as-is

  • Parallelized

  • Additional runs synchronize changes since the initial run

History

My audio library is a comprised of FLAC’s, MP3’s, cover images, and various metadata files - totaling roughly 500GB. This is not a problem when I’m on my desktop - wired into the same network as my server. However, my laptop and phone use often suffers from poor connectivity and limit storage capacities. Further, lossless audio often is a waste as the my laptop and phone used in less-than-ideal environments and equipment. Thus, I decided to use only MP3’s on those devices.

Previously, I was solving this with a combination of mp3fs and rsync. This served me well for a number of years, but had a few drawbacks for my uses.

  • Only MP3 - Cannot experiment with formats like Opus without implementing support in mp3fs’s C codebase.

  • Only CBR MP3 - LAME’s V0 often is indistinguishable from 320 CBR while reducing the file size by ~15%.

  • Uses FUSE - Makes containerization and portability more complicated.

  • Not Parallelized - On a system with eight logical cores and competent disk speeds, encoding a one file at a time is a gross inefficiency.

Harmonize transcodes to LAME V0, has no dependency on FUSE, and supports parallel copying and transcoding. While it currently only transcodes to MP3, it’s written in Python. This is far more accessible to modification for a Pythonista like myself.

Installation

If installing from PyPI or using the script directly, ensure the following are installed:

  • Python 3.6+

  • FLAC

  • LAME

Usage

$ harmonize -h
usage: harmonize [-h] [-n NUM_PROCESSES] source target

positional arguments:
  source            Source directory
  target            Target directory

optional arguments:
  -h, --help        show this help message and exit
  -n NUM_PROCESSES  Number of processes to use

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

harmonize-0.3.2.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

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

harmonize-0.3.2-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file harmonize-0.3.2.tar.gz.

File metadata

  • Download URL: harmonize-0.3.2.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for harmonize-0.3.2.tar.gz
Algorithm Hash digest
SHA256 0d53eb928aa305f3d1379fcddb0a3e16ea4738032bd51a971ae192a91ae3b256
MD5 977bc26186320e21921979b4ee097227
BLAKE2b-256 bbb89ad5bdc97088534e1bc133b8772076ea18310512bd7489a1d8b115e987a1

See more details on using hashes here.

File details

Details for the file harmonize-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: harmonize-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for harmonize-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5c498854eec043d5b7aedede0a377acb3ce398ab834a8b42d1f598b3c3d0f4dc
MD5 35c16b428190a94557cea2e0871aa49c
BLAKE2b-256 076be045648fb2df7210aa1bd1dbd33deab1813ee5a42750814220fe118bdf29

See more details on using hashes here.

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