-
Notifications
You must be signed in to change notification settings - Fork 157
/
NEWS
1066 lines (732 loc) · 31.9 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
.. _release-1.48.0:
1.48.0 - ????-??-??
-------------------
* Changed the default branch from master to main
.. _release-1.47.0:
1.47.0 - 2023-09-03
-------------------
* ID3: Allow reading TYER tags in the form of "yyyy-mm-dd" :pr:`597`
* ID3: Handle negative extended header sizes :pr:`607`
* ID3: id3 frames fix bad cast due to str.isdigit :pr:`616`
* MP3: Auto-detect MP3 files without ID3 tags :pr:`601`
* WAVE: Extensible wave format support :bug:`595` :pr:`596`
* WAVE, AIFF: Handle truncated IFF files :bug:`496` :pr:`517`
* MP4: add a check for wrong offsets in mp4 files :bug:`426` :pr:`462`
* FLAC: Fix cuesheet and seektable saving :pr:`534`
* TrueAudio: Read sample rate as unsigned and handle zero sample rate :pr:`609`
* docs: Fixed documentation for id3.ID3.save parameter v2_version
* docs: Make extlinks compatible with sphinx 6.0 :pr:`590`
* docs: Fixed various typos :pr:`602`
* Add some more type annotations :pr:`622`
* Various minor fixes for issues uncovered by oss-fuzz :pr:`620` :pr:`621` :pr:`623`
.. _release-1.46.0:
1.46.0 - 2022-10-09
-------------------
* Drop Support for Python 3.5 and 3.6 :pr:`487` :pr:`568`
* Add pyproject.toml and switch to poetry for development only :pr:`513`
* tests: no longer include flake8 in the test suite, it has to be run separately now :pr:`571`
* Start adding some type annotations and integrate mypy :pr:`488`
* easyid3: map easyid3 grouping to TIT1 :pr:`505`
* mutagen-inspect: add usage documentation :pr:`540`
* wave: Fix bitrate calculation :pr:`566`
* FLAC: handle files where the first metadata block is not STREAMINFO :pr:`500`
* Increase buffer size for rewriting files from 256K to 1M to improve performance with network shares :pr:`570`
* Other changes: code cleanup :pr:`514`, typos :pr:`565`, remove upper limit for python version :pr:`579`
.. _release-1.45.1:
1.45.1 - 2020-07-31
-------------------
* Fix flake8 tests when run after calling ``setup.py build`` :bug:`482`
* No longer use mmap when rewriting files. Fixes slow save performance with Windows network shares, ZFS and more :pr:`483` :pr:`484`
.. _release-1.45.0:
1.45.0 - 2020-07-11
-------------------
* WAVE support with ID3 tags :pr:`408` (:user:`Philipp Wolfer <phw>`, :user:`Borewit`)
* DSDIFF support with ID3 tags :pr:`473` :pr:`472` (:user:`Philipp Wolfer <phw>`)
* MP4: Add support for nero chapters :pr:`398` (:user:`Martin Weinelt <mweinelt>`)
* wavpack: add support for wavpack DSD :pr:`464` (:user:`Timothy Redaelli <drizzt>`)
* wavpack: add bits_per_sample :pr:`467` (:user:`Timothy Redaelli <drizzt>`)
* MP4: handle DecoderSpecificInfo with wrong instance size :pr:`465`
* docs: various fixes :pr:`461` (:user:`Terence Eden <edent>`), :pr:`474` (:user:`naglis`)
* tests: depend on flake8 now (instead of pycodestyle and pyflakes)
* docs: fix warnings with sphinx v3
Fuzzing related:
* Fuzzing integration with `python-afl <https://github.com/jwilk/python-afl>`__ :pr:`449`
* Fix various unhandled error cases in ogg, asf, oggvorbis, id3 :pr:`441`, :pr:`445`, :pr:`446`, :pr:`447`, :pr:`448`, :pr:`454` (:user:`Julien Voisin <jvoisin>`)
* aac: Fix ZeroDivisionError in case frequency is unknown
* musepack: handle truncated stream header
* musepack: handle invalid sample rate index
* musepack: handle duplicate RG/SH packets
* oggtheora: handle truncated header packet
* oggtheora: fail if FRN in the header packet is zero
* oggtheora: handle empty pages in more cases
* ogg: handle empty pages in to_packets()
* aiff: handle overflow in read_float() :pr:`456`
.. _release-1.43.1:
1.43.1 - 2020-07-11
-------------------
* Add pickle support for enum types :pr:`477`
* docs: fix various warnings with sphinx v3
.. _release-1.44.0:
1.44.0 - 2020-02-10
-------------------
* Python 2 is no longer supported :bug:`410`
* mp4: Fix some infinite loops in the mp4 parser :pr:`429` (:user:`Julien Voisin <jvoisin>`)
* flac: Fix pickle support for SeekPoint :pr:`428` (:user:`point-source`)
* aiff: Fix a division by zero :pr:`431` (:user:`Julien Voisin <jvoisin>`)
* asf: Catch a MemoryError :pr:`432` (:user:`Julien Voisin <jvoisin>`)
* oggtheora: Fix a division by zero :pr:`430` (:user:`Julien Voisin <jvoisin>`)
.. _release-1.43.0:
1.43.0 - 2019-11-17
-------------------
* **Note: 1.43.x might be the last version supporting Python 2**
* Python 3.4 is no longer supported
* Building requires 'setuptools' now, CLI tools depend on 'pkg_resources'
* CLI tools are setuptools entry points now
..
* Fix collections ABCs deprecation warning :pr:`371` (:user:`Ken Sato <ksato9700>`)
* Minor typo fixes :pr:`375` (:user:`Nicholas Chammas <nchammas>`)
* MP3: increase max initial wrong syncs from 1000 to 1500 :pr:`376` (:user:`Hamid Alaei Varnosfaderani <halaei>`)
* FLAC: support files with multiple VORBIS_COMMENT blocks like libflac :pr:`378`
* ID3: Improved TYER/TDAT/TIME upgrade to TDRC :pr:`385`
* MP4: Add support for iTunes HD Video tag (hdvd) :pr:`386` (:user:`Jay Sandhu <JaySandhu>`)
* Add AC3 file type :pr:`400` (:user:`Philipp Wolfer <phw>`)
* AIFF: renamed sample_size to bits_per_sample (sample_size still works) :pr:`403` (:user:`Philipp Wolfer <phw>`)
* API doc fixes :pr:`404` :pr:`407` (:user:`Philipp Wolfer <phw>`)
* Add support for Tom's lossless Audio Kompressor (TAK) :pr:`405` (:user:`Philipp Wolfer <phw>`)
* OptimFROG: support encoder version >= 5.100 :pr:`406` (:user:`Philipp Wolfer <phw>`)
* AIFF: Fix handling of padding bytes, safe chunk manipulation :pr:`409` (:user:`Philipp Wolfer <phw>`)
* Fix typos :pr:`412` (:user:`Tim Gates <timgates42>`)
.. _release-1.42.0:
1.42.0 - 2018-12-26
-------------------
* ID3: Always read id3v1 tags and include them when no id3v2 equivalent
exists. Can be disabled with the new ``load_v1`` option,
see :meth:`id3.ID3.load`
:pr:`357` (:user:`Fredrik Strupe <frestr>`)
* ID3: Add a pretty print implementation for SYLT
:pr:`359` (:user:`Hamid Alaei Varnosfaderani <halaei>`)
* vorbis: Improved error messages when validating keys/values
:pr:`356` (:user:`Michael Booth <MJuddBooth>`)
* Fix pylint warnings when using the various ``save()`` methods :pr:`364`
.. _release-1.41.1:
1.41.1 - 2018-08-11
-------------------
* MP4: fix rtng, stik, shwm getting saved as 16bit ints instead of 8bit :bug:`349`
.. _release-1.41.0:
1.41.0 - 2018-07-15
-------------------
* Documentation fixes :pr:`342` (:user:`Jakub Wilk <jwilk>`)
* mid3v2: Add support for WXXX frames :bug:`344` :bug:`348`
* Fix decoding of track_peak from MP3 Info Tag :pr:`345`
(:user:`Anton Yuzhaninov <citrin>`)
* MonkeysAudio: set bits_per_sample for older files :bug:`347`
.. _release-1.40.0:
1.40.0 - 2018-01-25
-------------------
* APEv2: Ensures tags are saved in a deterministic way :pr:`329`
(:user:`cushy007`)
* Restore WinXP support for the CLI tools :bug:`332`
* easymp4: Fix EasyMP4.add_tags() when no tags exist :bug:`334`
* id3: Fix PyCharm not being able to resolve id3 frame class references
:bug:`336`
* Support pathlib.Path objects for paths (PEP 519) :bug:`337` :pr:`338`
(:user:`Andrew Rabert <nvllsvm>`)
* Use semver for versioning
1.39 - 2017-11-05
-----------------
* Tests:
* Require `hypothesis <https://hypothesis.readthedocs.io>`__
* Run pycodestyle/pyflakes tests by default. Skip with ``--no-quality`` or
``-m no quality`` when using pytest directly.
* Python 3.3 is no longer supported
* MP3: Improved bitrate accuracy for files with XING header :bug:`328`
(thanks :user:`Michaël Defferrard <mdeff>`)
* ASF: Fix case where some tags resulted in broken ASFUnicodeAttribute
instances :bug:`324`
* Add support for filesystems which don't support opening files read/write
(gvfs over fuse for example) :bug:`300`
* mid3v2: Add support for USLT :bug:`306`
* Minor improvements by :user:`Borewit` and
:user:`Evan Purkhiser <EvanPurkhiser>`
1.38 - 2017-06-01
-----------------
* Note: New release tarballs are now hosted on github:
https://github.com/quodlibet/mutagen/releases
* ID3:
* Add iTunes grouping frame `id3.GRP1` :bug:`304`
* Fix exposing text frames where the text can't be encoded with the
reported encoding due to merging of frames :bug:`307`
* OGG: Fix wrong StreamInfo.length (small negative value) for all
ogg based formats in rare cases. :bug:`308`
1.37 - 2017.02.24
-----------------
* Relicense "GPLv2" → "GPLv2 or later" :bug:`291`
* DSF: add `mutagen.dsf` module for DSF (DSD Stream File) support
:pr:`283` (Boris Pruessmann)
* MP3: Add `mp3.MPEGInfo.encoder_settings` containing a guess of the encoder
settings used, for example ``"-V2"`` for LAME :bug:`66`
* ID3: add iTunes movement related frames `id3.MVIN` and `id3.MVNM`
* MP4: support ``©mvi``, ``©mvc``, ``shwm``, ``stik``, ``rtng``, ``tves``,
``tvsn``, ``plID``, ``cnID``, ``geID``, ``atID``, ``sfID``, ``cmID``,
``akID`` :bug:`130`
1.36.3 - 2017.02.24
-------------------
* MP3: fix error with xing frames without a frame count :bug:`292`
1.36.2 - 2017.01.25
-------------------
* ID3: Always write little endian utf-16 with BOM.
Fixes tests on big endian machines :pr:`289`
1.36.1 - 2017.01.22
-------------------
* Support GAE runtime :bug:`286`
* FLAC: Fix crash when loading files with zero samples :bug:`287`
* MP3: Handle broken lame tags written by older lame versions
1.36 - 2016.12.22
-----------------
* ID3: Ignore trailing empty values for v2.3 text frames :bug:`276`
* ID3: Write large APIC frames last :bug:`278`
* EasyID3: support saving as v2.3 :bug:`188`
* FLAC: Add StreamInfo.bitrate :bug:`279`
* mid3cp: Add ``--merge`` option :bug:`277`
* MP4: Allow loading files without audio tracks :bug:`272`
1.35.1 - 2016.11.09
-------------------
* Revert back to distutils :bug:`273`
1.35 - 2016.11.02
-----------------
* Tests: Require pytest
* Tools: Install .exe launchers on Windows
* setup.py: Require setuptools
* ID3:
* Fix loading files with CRM frames :bug:`239`
* Fix loading AENC, LINK, GRID frames with no payload
* Merge duplicate text frames with same key on load :bug:`172`
* Allow parsing of duplicate APIC frames :bug:`172`
* Parse utf-16 text fields with missing BOM :bug:`267`
* Increase max resyncs for the mpeg frame search :bug:`268`
1.34.1 - 2016.08.13
-------------------
* ID3: Expose some internals again to make Picard (mostly) work again.
* http://tickets.musicbrainz.org/browse/PICARD-833
* https://github.com/metabrainz/picard/pull/479
1.34 - 2016.07.20
-----------------
* ID3:
* Add `CTOC <id3.CTOC>` and `CHAP <id3.CHAP>` frames. New classes:
`ID3Tags <id3.ID3Tags>`, `CTOCFlags <id3.CTOCFlags>`. :bug:`6`
* Add `TCAT <id3.TCAT>`, `TKWD <id3.TKWD>`, `PCST <id3.PCST>` frames.
:bug:`249`
* Validate user provided LNK/LINK frameid. :bug:`242`
* Add `RVAD <id3.RVAD>`, RVA frames
* Add TST, TSA, TS2, TSP and TSC frames
* Fix not writing optional fields when saving to v2.3
* Add default field values for all frames
* Drop Python 2.6 support
* EasyID3: Fix TXXX frame encoding when setting a non-latin1 encodable
value after a latin1 one. :bug:`263`
1.33.2 - 2016.07.05
-------------------
* Fix loading of small ogg/apev2 files (1.33 regression)
1.33.1 - 2016.06.29
-------------------
* Fix Overeager deprecation warnings :bug:`261`
1.33 - 2016.06.29
-----------------
* FileType, Metadata: File-like object support :bug:`1`
* mid3v2: Add APIC support. :bug:`47`
* EasyID3: Fix handling of RVA2 frames with non-lowercase description
:bug:`215`
* mid3v2: Add UFID support. :bug:`234`
* ID3: Include human-readable representation of the picture type in
APIC._pprint() :bug:`244`
* EasyID3: make albumartist use TPE2 and move performer to TXXX. :bug:`252`
* ID3: id3.ID3TimeStamp comparator: check type :pr:`260`
(Fabian Peter Hammerle)
* setup.py: follow PEP440 for the development version
* FileType/Metadata.load/save/delete no longer raise IOError or IOError
subclasses. They only raise subclasses of MutagenError.
1.32 - 2016.05.02
-----------------
* Add basic SMF (Standard MIDI File) support (:mod:`mutagen.smf`)
* FLAC: add ``audio/flac`` mime type. :bug:`235`
* ASF: Fixed crash when object size is longer than the header and file length
(Ben Ockmore)
* ID3: Validate attributes set after frame creation :commit:`69368c31e00`
(:user:`Daniel Plachotich <danpla>`)
* MP4: validate values in ``__setitem__`` so things don't fail in save()
:bug:`236`
* tests: Fix SynchronizedTextSpec test on big-endian machines :bug:`247`
(Daniel Plachotich)
* ID3: do type checking in ``__setitem__`` :bug:`251`
* Building the documentation now requires sphinx >= 1.3
* New :class:`mutagen.Tags` base class for tags
* Moved from Bitbucket to GitHub
1.31 - 2015.09.10
-----------------
* New padding control API for flac/id3/mp4/asf/ogg/aiff and everything
based on it, except oggflac :bug:`229`
* Mutagen will now reduce padding on save if there is lots of it.
* delete() will remove padding in addition to tags.
* ASF:
* Padding support :bug:`201`
* Don't report negative lengths for some broken files
* New :class:`asf.ASFInfo`.codec_type/codec_name/codec_description
* Implement ASF.delete()
* OGG: Padding support for Opus/Vorbis/Theora/Speex
* M4A: Implementation removed. Every operation will raise. Use mp4 instead.
* Tools: Support Unicode output under Windows :bug:`232`
1.30 - 2015.08.22
-----------------
* FLAC:
* Fix :meth:`flac.FLAC.save` in case the source contained a too large
(invalid but recovered) image block :bug:`226`
* MP3:
* Improved length and bitrate accuracy:
* Read lame "Info" tags for improved bitrate/length accuracy
* Use bytes info of VBRI headers for improved bitrate accuracy
* Subtract encoder delay/padding from length for improved length accuracy
(especially for short tracks)
* Fix rare false identification of Xing headers :bug:`182`
* New :class:`mp3.MPEGInfo`.encoder_info attribute containing the encoder
name and version :bug:`66`
* New :class:`mp3.MPEGInfo`.bitrate_mode attribute exposing if the file is
VBR, ABR or CBR :bug:`24` :bug:`66`
* New :class:`mp3.MPEGInfo`.channels attribute providing the channel count
* New :class:`mp3.MPEGInfo`.track_gain/track_peak/album_gain values exposing
the replaygain info provided by the lame header :bug:`36`
* ID3:
* New :class:`id3.PictureType` enum for the picture type used in APIC frames :bug:`222`
* MP4:
* Fix MP4FreeForm.__eq__ and MP4Cover.__eq__ when comparing with bytes
:bug:`218`
* Don't raise on :meth:`FileType.save` if there are no tags. :bug:`227`
* Minor fixes: :bug:`228`
1.29 - 2015.05.09
-----------------
* mid3v2: Fix an error under Python 3 with files without tags :bug:`219`
* mid3v2: Various Windows+Python2+Unicode fixes :bug:`214`
* Don't emit warnings during loading (ID3Warning) :bug:`223`
* py.test support
1.28 - 2015.03.06
-----------------
* Various minor fixes to make mutagen behave the same under Python3 as under
Python2.
* Update gpl text :bug:`205`
* Documentation: Add example for how to create a new flac.Picture :bug:`209`
* ID3:
* Various error handling fixes (:bug:`110`, :bug:`211`, ...)
* Don't hide ID3 loading errors with ID3FileType.
* In case a synch safe marked frame isn't sync safe, only warn :bug:`210`
* Removed PEDANTIC mode
* Tools:
* Add signal handling :bug:`170`
* mid3cp: Make it work under Windows.
* mutagen-inspect: Make it work under Windows+Python3 :bug:`216`
* Support unicode file paths under Windows+Python2 :bug:`214`
* Support file paths with invalid encoding under Unix+Python3.
1.27 - 2014.11.28
-----------------
* MP4:
* New ``MP4Info.codec`` for identifying the contained audio codec
e.g. ``"mp4a"``, ``"alac"``, ``"mp4a.40.2"``, ``"ac-3"`` etc.
:commit:`b2f22b81c77`
* New ``MP4Info.codec_description``: name of the audio codec
e.g. ``"ALAC"``, ``"AAC LC"``, ``"AC-3"``
* OggOpus:
* Preserve data after vorbis comment (
See https://tools.ietf.org/html/draft-ietf-codec-oggopus-05#section-5.2)
:bug:`202`
* AAC:
* New AAC FileType. Supports loading ADTS/ADIF AAC files. :bug:`15`
1.26 - 2014.11.10
-----------------
* MP4:
* Parse channels/sample_rate/bits_per_sample/bitrate for ALAC files
:bug:`199` :commit:`192cfcaf14` (Adrian Sampson, Christoph Reiter)
* ASF:
* Support writing multiple values for
Author/Title/Copyright/Description/Rating :bug:`151`
* Fix read order for multi value tags
* Various Python3 fixes
* EasyID3: Add more tag mappings :bug:`136` (Ben Ockmore)
* MPC/SV8: Fix parsing of SH packets with padding :bug:`198`
* docs:
* New logo :commit:`b728fa75` (:user:`Samuel Messner <obskyr>`)
* Add examples for handling cover art in vorbiscomment :bug:`200`
* Add examples for id3v2.3
1.25.1 - 2014.10.13
-------------------
* ID3: Fix parsing of some files with Python 3 :bug:`194`
1.25 - 2014.10.03
-----------------
* Python 3 support (Ben Ockmore et al) :bug:`27`
Supported: Python 2.6, 2.7, 3.3, 3.4 (CPython and PyPy)
* All custom exceptions now have a common mutagen.MutagenError base class
* mutagen.File: prefer theora over vorbis/flac streams in ogg :bug:`184`
* New mid3cp script for copying id3 tags :bug:`178`
(Marcus Sundman, Ben Ockmore)
* ID3:
* Parse 2.3/4 frames with 2.2 names :bug:`177`
* Try to detect apev2 tags when looking for id3v1 tags :bug:`122`
* New id3.Encoding, id3.ID3v1SaveOptions enums :bug:`190`
* ASF:
* Raise a proper exception on invalid utf-16 :bug:`127`
* APEv2:
* Fix UnicodeDecodeError during parsing :bug:`174`
* MP4:
* Fix struct.error exception during parsing :bug:`119`
* New AtomDataType enum for MP4FreeForm.dataformat values
* Read some previously ignored purl/egit atoms
* Read multi value reverse DNS tags written by foobar2000
* Read multi value atoms written by MusicBee :bug:`165`
* Write back unknown atoms and ones that failed to parse.
1.24 - 2014.08.13
-----------------
* Moved to Bitbucket: https://bitbucket.org/lazka/mutagen
* ID3:
* Parse utf-16 text frames with wrong termination :bug:`169`
* Fix parsing of utf-16 SYLT frames :bug:`173`
* WavPack:
* Fix length calculation if sample count is missing in the header :bug:`180`
* setup.py: Don't install leftover files produced by the test suite :bug:`179`
* tests: Fix error with POSIX locale :bug:`181`
1.23 - 2014.05.14
-----------------
* tools: Don't crash in misconfigured envs, fall back to utf-8.
* mp3: Return correct mimetype for MP2 files. :bug:`163`
* id3: deterministic sorting of frames. :bug:`166`
* AIFF support :bug:`146` (Evan Purkhiser)
1.22 - 2013.09.08
-----------------
* Minimum required Python version is now 2.6
* Online API reference at https://mutagen.readthedocs.org/
* EasyID3:
* Fix crash with empty TXXX values. :bug:`135`
* ID3:
* id3v2.3 writing support :bug:`85`
* Add iTunes podcast frames (TGID, TDES, WFED) :bug:`141`
* Updated id3v1 genre list
* MP4:
* add_tags() will not replace existing tags. :bug:`101`
* Don't ignore tags if parsing unknown atoms fails.
* Raise on invalid 64bit atom size :bug:`132` (Sidnei da Silva)
* APEv2:
* Handle invalid tag item count. :bug:`145` (Dawid Zamirski)
* Ogg:
* Faster parsing of files with large packets.
* VComment:
* Preserve text case for field names added through the dict interface
:bug:`152`
* mid3v2:
* New -e,--escape switch to enable interpretation of escape sequences and
makes escaping of the colon separator possible. :bug:`159`
* mid3iconv:
* Convert COMM frames :bug:`128`
1.21 - 2013.01.30
-----------------
* Fix Python 2.3 compatibility (broken in 1.19).
* Fix many warnings triggered by -3. :bug:`27`
* mid3v2:
* Add --TXXX support. :bug:`62` (Tim Phipps)
* Add --POPM support. :bug:`71`
* Allow setting multiple COMM or TXXX frames with one command line.
* FLAC:
* Try to handle corrupt Vorbis comment block sizes. :bug:`52`
* Try to handle corrupt Picture block sizes :bug:`106` (Christoph Reiter)
* Don't leak file handle with PyPy :bug:`111` (Marien Zwart)
* ID3:
* MakeID3v1: Do not generate bad tags when given short dates. :bug:`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 :bug:`97` (Christoph Reiter)
* Fix handling of invalid SYLT frames :bug:`105` (Christoph Reiter)
* MP3:
* Fix error when loading extremely small MP3s. :bug:`72`
* Fix rounding error in CBR length calculation :bug:`93` (Christoph Reiter)
* Use 'open' rather than 'file' everywhere. :bug:`74` (Dan Callahan)
* mid3iconv:
* Accurately copy QL-style frame encoding behavior. :bug:`75`
* Skip unopenable files. :bug:`79`
* ID3FileType:
* Remember which tag type load() was called with even if the file
doesn't yet have any ID3 tags. :bug:`89`
* VComment:
* Prevent MemoryError when parsing invalid header :bug:`112`
(Jyrki Pulliainen)
* ASF:
* Don't corrupt files on the second save() call :bug:`81` (Christoph Reiter)
* Always store GUID objects in the MetadataLibraryBlock :bug:`81`
* OggTheora: Fix length/bitrate calculation. :bug:`99` (Christoph Reiter)
* MP4:
* Less strict MP4 covr atom parsing. :bug:`86` (Lukáš Lalinský)
* Support atoms that extend to the end of the file. :bug:`109`
(Sidnei da Silva)
* Preserve freeform format flags :bug:`103` (Christoph Reiter)
* OggOpus support. :bug:`115` (Christoph Reiter)
* Musepack:
* Fix SV7 bitrate calculation :bug:`7` (Christoph Reiter)
* Support SV8 :bug:`7` (Christoph Reiter)
1.20 - 2010.08.04
-----------------
* ASF: Don't store blocks over 64K in the MetadataObject block;
use the MetadataLibraryBlock instead. :bug:`60` (Lukáš Lalinský)
* ID3: Faster parsing of files with lots of padding. :bug:`65`
(Christoph Reiter)
* FLAC: Correct check for audio data start. :bug:`67`
1.19 - 2010.02.18
-----------------
* ID3:
* POPM: 'count' is optional; the attribute may not exist. :bug:`33`
* TimeStampTextFrame: Fix a TypeError in unicode comparisons. :bug:`43`
* MakeID3v1: Translate TYER into ID3v1 year if TDRC is not present. :bug:`42`
* mid3v2:
* Allow --delete followed by --frame, and --genre 1 --genre 2. :bug:`37`
* Add --quiet and --verbose flags. :bug:`40`
* moggsplit: --m3u option to write an M3U playlist of the new files. :bug:`39`
* mid3iconv: Fix crash when processing TCML or TIPL frames. :bug:`41`
* VCommentDict: Correctly normalize key names for .keys() iterator. :bug:`45`
* MP3: Correct length calculation for MPEG-2 files. :bug:`46`
* oggflac: Fix typo in docstring. :bug:`53`
* EasyID3: Force UTF-8 encoding. :bug:`54`
* EasyMP4: Fix 'genre' translation. :bug:`56`
1.18 - 2009.10.22
-----------------
* ASF:
* Distinguish between empty and absent tag values in
ContentDescriptionObjects. :bug:`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. :bug:`32`
1.17 - 2009.10.07
-----------------
* ID3:
* Support for the iTunes non-standard TSO2 and TSOC frames.
* Attempt to recover from bad SYLT frames. :bug:`2`
* Attempt to recover from faulty extended header flags. :bug:`4` :bug:`21`
* Fix a bug in ID3v2.4 footer flag detection, :bug:`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. :bug:`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. :bug:`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). :bug:`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-existent 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