Skip to main content

a audio file and metadata synchronization program

Project description

PyPI status PyPI license PyPI version mmusicc PyPI pyversions Documentation Status code style: black

mmusicc is a lightweight audio file and metadata control and synchronization program to transfer the changes made in a master music library to a derived music library. New files or albums are converted using ffmpeg. When the file already exits, the metadata is compared und updated if it has changed. The individual tags and their processing can be freely selected by each user via a configuration file. There will be a simple Autofill future that can be used to fix small consistency errors, the rules will be editable in the config file (to be implemented). To Synchronize multiple folders at once, the folder structure, directory- and file-names must be identical at source and target, this should be given when this tool is used to one-way sync the master directory. Data can also be exported to or imported from a database (implementation still very basic) e.g. for a metadata backup.

mmusicc shall not replace a metadata editor and only provides methods for automated syncing of large music libraries.

mmusicc’s source code is inspired by the two music tag programs quodlibet and puddletag and uses some code fragments of those.

Installation & Usage

mmusicc is still under development and should not be used to overwrite master data. Using it for ‘slave’ data is perfectly fine. Multiple test confirm that the master files are not modified and only accessed. It is also tested that the program is deterministic.

pip install mmusicc

The script is automatically installed on system. Use --help for usage info or see its output at usage on mmusicc.readthedocs.org. See also the following examples:

# syncing a full library to mp3
mmusicc -s Music -t MusicMp3 -f .mp3 --ffmpeg-options "-codec:a libmp3lame -qscale:a 2 -codec:v copy"

# syncing a full library to ogg
mmusicc --source Music --target MusicOgg --format .ogg --ffmpeg-options "-c:a libvorbis -q 6 -vn"

# syncing a full library to opus
mmusicc --source Music --target MusicOgg --format .opus --ffmpeg-options "-c:a libopus -b:a 192000 -application audio -vn"

# converting one file to another format. The two commads are equivalent
mmusicc -s folder_source/song.flac -t . -f ogg
mmusicc -s folder_source/song.flac -t song.ogg

# saving metadata to database
mmusicc -s Music -tdb database.db

# importing metadata from database,
# where only tags which got a value are imported leaving others untouched
mmusicc -t MusicMp3 -sdb database.db  --lazy

# syncing A to B, where all existing metadat is deleted,
# leaving only the white listet tags on file
mmusicc -s A -t B -f .ogg -white-list-tags track title artist delete-existing-metadata

Supported Formats/Codecs

Supported Codecs anf Formats are displayed with --help (see usage).

Additional formats/codecs will be implemented on request.

For now the only formats/codecs supported are, what I need for myself.

Remarks

Catching every special case of certain metadata formats and transferring it to a normalized dict is nearly impossible (especially with id3). Also different tagging program’s have certain specialities how certain uncommon tags are saved or if say are even displayed. Therefore some features are not yet or only partially supported:

  • Only one Album Cover file is supported at the moment. More will raise Errors (will be fixed soon).

  • Support for id3.PairedTextFrames was dropped, since it is not used much and I haven’t found a good way to handle them. They might come back in the future. They are used for ‘TIPL: Involved People List’, ‘TMCL: Musicians Credits List’. Some taggers use these field for e.g arranger.

Version Milestones

version

milestone

0.1.0

metadata working

0.2.0

mmusicc working (and first package distribution (test.pypi only))

0.3.0

comprehensive testing and verification (release on pypi)

0.5.0

interactive mode with text user interface (tui) to display changes

0.7.0

mmusicc can be run in graphical mode from tui (state machine)

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

mmusicc-0.3.0b1.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

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

mmusicc-0.3.0b1-py3-none-any.whl (65.6 kB view details)

Uploaded Python 3

File details

Details for the file mmusicc-0.3.0b1.tar.gz.

File metadata

  • Download URL: mmusicc-0.3.0b1.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.3

File hashes

Hashes for mmusicc-0.3.0b1.tar.gz
Algorithm Hash digest
SHA256 06fa92f6d4d7224f59ec76cbeadadb51519e50868f7dc165eb085816154ddaf5
MD5 43bb8a70fc65e33831621bb814a553e7
BLAKE2b-256 30485fc7cc5b78cdb706bb42dd8d567454261d777c02ceae4d5a5cd64c73241b

See more details on using hashes here.

File details

Details for the file mmusicc-0.3.0b1-py3-none-any.whl.

File metadata

  • Download URL: mmusicc-0.3.0b1-py3-none-any.whl
  • Upload date:
  • Size: 65.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.3

File hashes

Hashes for mmusicc-0.3.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e8a1589d8db67db232d6afd8b211693d24302321b78b51d79015ee6477f50f2
MD5 c9a1d9a44123c2d3a315f30e84339dee
BLAKE2b-256 62798ba46d4574669e1b241673fd8bd5466e9d98d4b34b27f8548f6d4a0c4d36

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