Skip to content

badwtg1111/mutagen

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mutagenx

mutagenx is a Python 3 library that aims to reimplement all of the features of the Python 2 library mutagen, plus a bit extra here and there. The port fixes things like string/bytes differentiation, archaic Python 2.3 functions, non-PEP8 styling and use of outdated (non-Python 3) libraries.

Currently in the very early stages of development, but please feel free to have a look at the latest testing branch and submit any issues you find with it! The library has been tested on Python 3.3.1, so that's currently the minimum official version. Please let me know if it works on Python 3.2 and 3.1, but don't bother with 3.0!

The rest of this README features text from the original mutagen 1.21 README file.

What is Mutagen?

Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, M4A, Monkey's Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level.

Mutagen works on Python 2.3+ and has no dependencies outside the CPython standard library.

Installing

$ ./setup.py build $ su -c "./setup.py install"

Documentation

The primary documentation for Mutagen is the doc strings found in the source code. $ pydoc mutagen $ pydoc mutagen.

The tools/ directory contains several useful examples, and there is a brief tutorial in TUTORIAL.

The API-NOTES file lists parts of the API that are either unstable or will be removed in the future.

Testing the Module

To test Mutagen's MP3 reading support, run $ tools/mutagen-pony Mutagen will try to load all of them, and report any errors.

To look at the tags in files, run $ tools/mutagen-inspect filename ...

To run our test suite, $ ./setup.py test

Compatibility/Bugs

Mutagen writes ID3v2.4 tags which id3lib cannot read. If you enable ID3v1 tag saving (pass v1=2 to ID3.save), id3lib will read those.

iTunes has a bug in its handling of very large ID3 tags (such as tags that contain an attached picture). Mutagen can read tags from iTunes, but iTunes may not be able to read tags written by Quod Libet.

Mutagen has had several bugs in correct sync-safe parsing and writing of data length flags in ID3 tags. This will only affect files with very large or compressed ID3 frames (e.g. APIC). As of 1.10 we believe them all to be fixed.

Prior to 1.10.1, Mutagen wrote an incorrect flag for APEv2 tags that claimed they did not have footers. This has been fixed, however it means that all APEv2 tags written before 1.10.1 are corrupt.

Prior to 1.16, the MP4 cover atom used a .format attribute to indicate the image format (JPEG/PNG). Python 2.6 added a str.format method which conflicts with this. 1.17 provides .imageformat when running on any version, and still provides .format when running on a version before 2.6.

Mutagen 1.18 moved EasyID3FileType to mutagen.easyid3, rather than mutagen.id3, which was used in 1.17. Keeping in mutagen.id3 caused circular import problems. To import EasyID3FileType correctly in 1.17 and 1.18 or later:

import mutagen.id3
try:
    from mutagen.easyid3 import EasyID3FileType
except ImportError:
    # Mutagen 1.17.
    from mutagen.id3 import EasyID3FileType

Mutagen 1.19 made it possible for POPM to have no 'count' attribute. Previously, files that generated POPM frames of this type would fail to load at all.

When given date frames less than four characters long (which are already outside the ID3v2 specification), Mutagen 1.20 and earlier would write invalid ID3v1 tags that were too short. Mutagen 1.21 will parse these and fix them if it finds them while saving.

About

Project to create a Python 3 library, functionally equivalent to mutagen.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published