Changelog¶
Upcoming¶
v0.17.0¶
Added
synced_lyricsfield backed by the ID3v2SYLT(synchronized lyrics) frame. Reads and writes a list of(text, milliseconds)tuples for MP3, AIFF, DSF, and WAVE files. Non-ID3 formats returnNone.
v0.16.2¶
Add
raise_on_unsupported_wavparameter toMediaFile.__init__to optionally raiseFileTypeErrorfor WAV files containing non-PCM audio streams (WAVE_FORMAT_MPEGLAYER3,WAVE_FORMAT_ADPCM,WAVE_FORMAT_ALAW,WAVE_FORMAT_MULAW).
v0.16.1¶
Raise
FileTypeErrorfor WAV files containing non-PCM audio streams that mutagen cannot tag correctly, includingWAVE_FORMAT_MPEGLAYER3(0x0055),WAVE_FORMAT_ADPCM(0x0002),WAVE_FORMAT_ALAW(0x0006), andWAVE_FORMAT_MULAW(0x0007).
v0.16.0¶
Added a multiple-valued
lyricists,composersandarrangersfields while preservinglyricist,composerandarrangeras first-value convenience aliases.
v0.15.0¶
Added a multiple-valued
remixersfield.
v0.14.0¶
Refactored the monolith
mediafile.py(2400 lines) into a modular structure with multiple files under themediafile/directory. This should make it easier to maintain and extend the codebase.Dropped support for Python 3.7, 3.8 and 3.9. MediaFile now requires Python 3.10 or later. This aligns with the current long-term support (LTS) versions of Python.
Added minimal contribution guidelines to CONTRIBUTING.md
Changed project linter and formatter from
flake8toruff. Reformatted the codebase withruff.Moved changelog into its own file,
changelog.rst. Also added github workflow for automatic changelog reminders.Modernized package and tests setup to use
poetry.Run pyupgrade to align code with Python 3.10+ syntax.
- Added TSO2 tag to
albumartist_sort, matching how Picard >= 1.2, iTunes and Swinsian interpret tags.
- Added TSO2 tag to
Added
TXXX:LABELandTXXX:MEDIAtags tolabelandmediafields, respectively, for MP3 files.
v0.13.0¶
Add a mapping compatible with Plex and ffmpeg for the “original date” fields.
Remove an unnecessary dependency on six.
Replace imghdr with filetype to support Python 3.13.
v0.12.0¶
Add the multiple-valued properties
artists_credit,artists_sort,albumartists_credit, andalbumartists_sort.
v0.11.0¶
List-valued properties now return
Noneinstead of an empty list when the underlying tags are missing altogether.
v0.10.1¶
Fix a test failure that arose with Mutagen 1.46.
Require Python 3.7 or later.
v0.10.0¶
Add the multiple-valued properties
albumtypes,catalognumsandlanguages.The
catalognumproperty now refers to additional file tags namedCATALOGIDandDISCOGS_CATALOG(but only for reading, not writing).The multi-valued
albumartistsproperty now refers to additional file tags namedALBUM_ARTISTandALBUM ARTISTS. (The latter is used only for reading.)The
ListMediaFieldclass now doesn’t concatenate multiple lists if found. The first available tag is used instead, like with other kinds of fields.
v0.9.0¶
Add the properties
bitrate_mode,encoder_infoandencoder_settings.
v0.8.1¶
Fix a regression in v0.8.0 that caused a crash on Python versions below 3.8.
v0.8.0¶
MediaFile now requires Python 3.6 or later.
Added support for Wave (.wav) files.
v0.7.0¶
Mutagen 1.45.0 or later is now required.
MediaFile can now use file-like objects (instead of just the filesystem, via filenames).
v0.6.0¶
Enforce a minimum value for SoundCheck gain values.
v0.5.0¶
Refactored the distribution to use Flit.
v0.4.0¶
Added a
barcodefield.Added new tag mappings for
albumtypeandalbumstatus.
v0.3.0¶
Fixed tests for compatibility with Mutagen 1.43.
Fix the MPEG-4 tag mapping for the
labelfield to use the right capitalization.
v0.2.0¶
R128 gain tags are now stored in Q7.8 integer format, as per the relevant standard.
Added an
mb_workidfield.The Python source distribution now includes an
__init__.pyfile that makes it easier to run the tests.
v0.1.0¶
This is the first independent release of MediaFile. It is now synchronised with the embedded version released with beets v1.4.8.