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.<module>

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 <your top-level MP3 directory here>
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.