1.21 - 2013.01.30 * Fix Python 2.3 compatibility (broken in 1.19). * Fix many warnings triggered by -3. (#27) * mid3v2: * Add --TXXX support. (#62, Tim Phipps) * Add --POPM support. (#71) * Allow setting multiple COMM or TXXX frames with one command line. * FLAC: * Try to handle corrupt Vorbis comment block sizes. (#52) * Try to handle corrupt Picture block sizes (#106, Christoph Reiter) * Don't leak file handle with PyPy (#111, Marien Zwart) * ID3: * MakeID3v1: Do not generate bad tags when given short dates. (#69) * ParseID3v1: Parse short (< 128 byte) tags generated by old Mutagen implementations of MakeID3v1, and tags with garbage on the front. * pprint: Sort frames by name. * Upgrade unknown 2.3 frames (#97, Christoph Reiter) * Fix handling of invalid SYLT frames (#105, Christoph Reiter) * MP3: * Fix error when loading extremely small MP3s. (#72) * Fix rounding error in CBR length calculation (#93, Christoph Reiter) * Use 'open' rather than 'file' everywhere. (#74, Dan Callahan) * mid3iconv: * Accurately copy QL-style frame encoding behavior. (#75) * Skip unopenable files. (#79) * ID3FileType: * Remember which tag type load() was called with even if the file doesn't yet have any ID3 tags. (#89) * VComment: * Prevent MemoryError when parsing invalid header (#112, Jyrki Pulliainen) * ASF: * Don't corrupt files on the second save() call (#81, Christoph Reiter) * Always store GUID objects in the MetadataLibraryBlock (#81) * OggTheora: Fix length/bitrate calculation. (#99, Christoph Reiter) * MP4: * Less strict MP4 covr atom parsing. (#86, Lukáš Lalinský) * Support atoms that extend to the end of the file. (#109, Sidnei da Silva) * Preserve freeform format flags (#103, Christoph Reiter) * OggOpus support. (#115, Christoph Reiter) * Musepack: * Fix SV7 bitrate calculation (#7, Christoph Reiter) * Support SV8 (#7, Christoph Reiter) 1.20 - 2010.08.04 * ASF: Don't store blocks over 64K in the MetadataObject block; use the MetadataLibraryBlock instead. (#60, Lukáš Lalinský) * ID3: Faster parsing of files with lots of padding. (#65, Christoph Reiter) * FLAC: Correct check for audio data start. (#67) 1.19 - 2010.02.18 * ID3: * POPM: 'count' is optional; the attribute may not exist. (#33) * TimeStampTextFrame: Fix a TypeError in unicode comparisons. (#43) * MakeID3v1: Translate TYER into ID3v1 year if TDRC is not present. (#42) * mid3v2: * Allow --delete followed by --frame, and --genre 1 --genre 2. (#37) * Add --quiet and --verbose flags. (#40) * moggsplit: --m3u option to write an M3U playlist of the new files. (#39) * mid3iconv: Fix crash when processing TCML or TIPL frames. (#41) * VCommentDict: Correctly normalize key names for .keys() iterator. (#45) * MP3: Correct length calculation for MPEG-2 files. (#46) * oggflac: Fix typo in docstring. (#53) * EasyID3: Force UTF-8 encoding. (#54) * EasyMP4: Fix 'genre' translation. (#56) 1.18 - 2009.10.22 * ASF: * Distinguish between empty and absent tag values in ContentDescriptionObjects. (#29) * mid3iconv: * Fix a crash when processing empty (invalid) text frames. * MAJOR API INCOMPATIBILITY!!!! * EasyID3FileType is now in mutagen.easyid3, not mutagen.id3. This change was necessary to restore API compatibility with 1.16, as 1.17 accidentally contained a circular import preventing mutagen.easyid3 from importing by itself. (#32) 1.17 - 2009.10.07 * ID3: * Support for the iTunes non-standard TSO2 and TSOC frames. * Attempt to recover from bad SYLT frames. (#2) * Attempt to recover from faulty extended header flags. (#4, #21) * Fix a bug in ID3v2.4 footer flag detection, (#5) * MP4: * Don't fail or double-encode UTF-8 strings when given a str. * Don't corrupt 64 bit atom sizes when resizing atoms. (#17) * EasyID3: * Extension API for defining new "easy" tags at runtime. * Support for many, many more tags. * OggVorbis, OggSpeex: Handle bitrates below 0 as per the spec. (#30) * EasyMP4: Like EasyID3, but for iTunes MPEG-4 files. * mutagen.File: New 'easy=True' argument to create new EasyMP3, EasyMP4, EasyTrueAudio, and EasyID3FileType instances. 1.16 - 2009.06.15 * Website / code repository move. * Bug Fixes: * EasyID3: Invalid keys now raise KeyError (and ValueError). * mutagen.File: .flac files with an ID3 tag will be opened as FLAC. * MAJOR API INCOMPATIBILITY!!!! * Python 2.6 has required us to rename the .format attribute of M4A/MP4 cover atoms, because it conflicts with the new str.format method. It has been renamed .imageformat. 1.15 - 2008.12.01 * Bug Fixes: * mutagen.File: Import order no longer affects what type is returned. * mutagen.id3: Compression of frames is now disabled. * mutagen.flac.StreamInfo: Fix channel mask (support channels > 2). [35] * mutagen.mp3: Ignore Xing headers if they are obviously wrong. 1.14 - 2008.05.31 * Bug Fixes: * MP4/M4A: Fixed saving of atoms with 64-bit size on 64-bit platforms. * MP4: Conversion of 'gnre' atoms to '\xa9gen' text atoms now correctly produces a list of string values, not just a single value. * ID3: Broken RVA2 frames are now discarded. (Vladislav Naumov) * ID3: Use long integers when appropriate. * VCommentDict: Raise UnicodeEncodeErrors when trying to use a Unicode key that is not valid ASCII; keys are also normalized to ASCII str objects. (Forest Bond) * Tests: * FLAC: Use 2**64 instead of 2**32 to test overflow behavior. 1.13 - 2007.12.03 * Bug Fixes: * FLAC: Raise IOError, instead of UnboundLocalError, when trying to open a non-existant file. (Lukáš Lalinský, Debian #448734) * Throw out invalid frames when upgrading from 2.3 to 2.4. * Fixed reading of Unicode strings from ASF files on big-endian platforms. * TCP/TCMP support. (Debian #452231) * Faster implementation of file-writing when mmap fails, and exclusive advisory locking when available. * Test cases to ensure Mutagen is not vulnerable to CVE-2007-4619. It is not now, nor was it ever. * Use VBRI header to calculate length of VBR MP3 files if the Xing header is not found. 1.12 - 2007.08.04 * Write important ID3v2 frames near the start. (Lukáš Lalinský) * Clean up distutils functions. 1.11 - 2007.04.26 * New Features: * mid3v2 can now set URL frames. (Vladislav Naumov) * Musepack: Skip ID3v2 tags. (Lukáš Lalinský) * Bug Fixes: * mid3iconv: Skip all timestamp frames. (Lukáš Lalinský) * WavPack: More accurate length calculation. ('ak') * PairedTextFrame: Fix typo in documentation. (Lukáš Lalinský) * ID3: Fixed incorrect TDAT conversion. The format is DDMM, not MMDD. (Lukáš Lalinský) * API: * Metadata no longer inherits from dict. * Relatedly, the MRO has changed on several types. * More documentation for MP4 atoms. (Lukáš Lalinský) * Prefer MP3 for files with unknown extensions and ID3 tags. 1.10.1 - 2007.01.23 * Bug Fixes: * Documentation mentions ASF support. * APEv2 flags and valid keys are fixed. * Tests pass on Python 2.3 again. 1.10 - 2007.01.21 * New Features: * FLAC: Skip ID3 tags. Added option to delete them on save. * EncodedTextSpec: Make private members more private. * Corrupted Oggs generated by GStreamer (e.g. Sound Juicer) can be read. * FileTypes have a .mime attribute which is a list of likely MIME types for the file. * ASF (WMA/WMV) support. * Bug Fixes: * ID3: Fixed reading of v2.3 tags with unsynchronized data. * ID3: The data length indicator for compressed tags is written as a synch-safe integer. 1.9 - 2006.12.09 * New Features: * OptimFROG support. * New mutagen.mp4 module with support for multiple data fields per atom and more compatible tag saving implementation. * Support for embedded pictures in FLAC files (new in FLAC 1.1.3). * mutagen.m4a is deprecated in favor of mutagen.mp4. 1.8 - 2006.10.02 * New Features: * MonkeysAudio support. (#851, Lukáš Lalinský) * APEv2 support on Python 2.5; see API-NOTES. (#852) 1.7.1 - 2006.09.24 * Bug Fixes: * Expose full ID3 tag size as .size. (#848) * New Features: * Musepack Replay Gain data is available in SV7 files. 1.7 - 2006.09.15 * Bug Fixes: * Trying to save an empty tag deletes it. (#813) * The semi-public API removal mentioned in 1.6's API-NOTES happened. * Stricter frame ID validation. (#830, Lukáš Lalinský) * Use os.path.devnull on Win32/Mac OS X. (#831, Lukáš Lalinský) * New Features: * FLAC cuesheet and seektable support. (#791, Nuutti Kotivuori) * Kwargs can be passed to ID3 constructors. (#824, Lukáš Lalinský) * mutagen.musepack: Read/tag Musepack files. (#825, Lukáš Lalinský) * Tools: * mutagen-inspect responds immediately to keyboard interrupts. 1.6 - 2006.08.09 * Bug Fixes: * IOError rather than NameError is raised when File succeeds in typefinding but fails in stream parsing. * errors= kwarg is correctly interpreted for FLAC tags now. * Handle struct.pack API change in Python 2.5b2. (SF #1530559) * Metadata 'load' methods always reset in-memory tags. * Metadata 'delete' methods always clear in-memory tags. * New Features: * Vorbis comment vendor strings include the Mutagen version. * mutagen.id3: Read ASPI, ETCO, SYTC, MLLT, EQU2, and LINK frames. * mutagen.m4a: Read/tag MPEG-4 AAC audio files with iTunes tags. (#681) * mutagen.oggspeex: Read/tag Ogg Speex files. * mutagen.trueaudio: Read/tag True Audio files. * mutagen.wavpack: Read/tag WavPack files. * Tools: * mid3v2: --delete-frames. (#635) 1.5.1 - 2006.06.26 * Bug Fixes: * Handle ENODEV from mmap (e.g. on fuse+sshfs). * Reduce test rerun time. 1.5 - 2006.06.20 * Bug Fixes: * APEv2 * Invalid Lyrics3v2 tags are ignored/overwritten. * Binary values are autodetected as documented. * OggVorbis, OggFLAC: * Write when the setup packet spans multiple pages. * Zero granule position for header packets. * New Features: * mutagen.oggtheora: Read/tag Ogg Theora files. * Test Ogg formats with ogginfo, if present. 1.4 - 2006.06.03 * Bug Fixes: * EasyID3: Fix tag["key"] = "string" handler. (#693) * APEv2: * Skip Lyrics3v2 tags. (Miguel Angel Alvarez) * Avoid infinite loop on malformed tags at the start of the file. * Proper ANSI semantics for file positioning. (#707) * New Features: * VComment: Handle malformed Vorbis comments when errors='ignore' or errors='replace' is passed to VComment#load. (Bastian Kleineidam, #696) * Test running is now controlled through setup.py (./setup.py test). * Test coverage data can be generated (./setup.py coverage). * Considerably more test coverage. 1.3 - 2006.05.29 * New Features: * mutagen.File: Automatic file type detection. * mutagen.ogg: Generic Ogg stream parsing. (#612) * mutagen.oggflac: Read/tag Ogg FLAC files. * mutagen.oggvorbis no longer depends on pyvorbis. * ID3: SYLT support. (#672) 1.2 - 2006.04.23 * Bug Fixes: * MP3: Load files with zeroed Xing headers. (#626) * ID3: Upgrade ID3v2.2 PIC tags to ID3v2.4 APIC tags properly. * Tests exit with non-zero status if any have failed. * Full dict protocol support for VCommentDict, FileType, and APEv2 objects. * New features: * mutagen.oggvorbis gives pyvorbis a Mutagen-like API. * mutagen.easyid3 makes simple ID3 tag changes easier. * A brief TUTORIAL was added. * Tools: * mid3iconv, a clone of id3iconv, was added by Emfox Zhou. (#605) 1.1 - 2006.04.04 * ID3: * Frame and Spec objects are not hashable. * COMM, USER: Accept non-ASCII (completely invalid) language codes. * Enable redundant data length bit for compressed frames. 1.0 - 2006.03.13 * mutagen.FileType, an abstract container for tags and stream information. * MP3: A new FileType subclass for MPEG audio files. * FLAC: * Add FLAC#delete. * Raise correct exception when saving to a non-FLAC file. * FLAC#vc is deprecated in favor of FLAC#tags. * VComment (used by FLAC): * VComment#clear to clear all tags. * VComment#as_dict to return a dict of the tags. * ID3: * Fix typos in PRIV#_pprint, OWNE#_pprint, UFID#_pprint. * mutagen-pony: Try finding lengths as well as tags. * mutagen-inspect: Output stream information with tags. 0.9 - 2006.02.21 * Initial release.