Каждый тип тега имеет разные названия для полей, и они не все идеально отображаются.
Если вы просто хотите кучу самых важных полей, Mutagen имеет «легкие» обертки для ID3v2 и MP4/ITMF. Так, например, вы можете сделать это:
Но это будет работать только для этих двух форматов файлов. Знаки Vorbis, Metaflac, APEv2 и WMT представляют собой по существу ключ свободной формы: значение или ключ: [список значений]. У Vorbis есть набор имен для общих полей комментариев, а WM имеет набор полей, которые отображаются графическим интерфейсом WMP и .NET API, но Metaflac и APEv2 даже не имеют этого. Фактически, довольно часто можно увидеть как «Artist», так и имя старого ID3v1 и «ARTIST», из Vorbis, в комментариях Metaflac.
И даже для ID3v2 отображения не идеальны - iTunes отображает рамку «TPE1» как «Исполнитель» и «TPE2» как «Исполнитель альбомов», а Foobar2000 показывает TPE2 как «Исполнитель» и TXXX: ALBUM ARTIST как «Исполнитель альбома».
Таким образом, чтобы сделать это правильно, вы должны смотреть на iTMF, Vorbiscomment, ID3v2 (или см Wikipedia), и WMT, а затем посмотреть на файлы вы имеете и добавить некоторые эвристики, чтобы решить, как получить то, что вы из файлов, которые у вас есть.
Например, вы могли бы попробовать что-то вроде этого:
>>> m = mutagen.File(path)
>>> for tag in ('TPE1', 'TPE2', u'©ART', 'Author', 'Artist', 'ARTIST',
... 'TRACK ARTIST', 'TRACKARTIST', 'TrackArtist', 'Track Artist'):
... try:
... artist = unicode(m[tag][0])
... break
... except KeyError:
... pass
Лучшим решением было бы перейти от типа тега и только попробуйте соответствующие поля для формата.
К счастью, другие люди сделали эту работу за вас. Вы можете найти почти всю информацию, которую люди собрали о том, как разные игроки/тегеры сопоставляют значения с каждым форматом на форумах и вики Hydrogen Audio, а различные другие проекты превратили эту информацию в простые таблицы сопоставления тегов, которые вы можете просто взять и занять для вашего кода, например this one от MusicBrainz. MusicBrainz Picard даже имеет обертку вокруг Mutagen, которая позволяет использовать согласованный набор имен метаданных (те, которые описаны here) со всеми типами тегов.
После небольшого поиска после прочтения ответа @abarnert выше я наткнулся на следующее, что является очень приятным началом для своего рода обертки Mutagen, который интеллектуально получает большинство общих полей для кучи форматов: https : //github.com/sampsyo/beets/blob/master/beets/mediafile.py –