Каждый тип тега имеет разные имена для полей, и не все они идеально сопоставляются.
Если вам просто нужно несколько наиболее важных полей, у Mutagen есть «простые» оболочки для ID3v2 и MP4/ITMF. Так, например, вы можете сделать это:
>>> m = mutagen.File(path, easy=True)
>>> m['title']
[u'Sunshine Smile']
>>> m['artist']
[u'Adorable']
>>> m['album']
[u'Against Perfection']
Но это будет работать только для этих двух форматов файлов. Теги Vorbis, Metaflac, APEv2 и WMT, по сути, представляют собой сопоставления ключ: значение или ключ: [список значений] произвольной формы. В Vorbis есть рекомендуемый набор имен для общих полей комментариев, а в WM есть набор полей, которые отображается графическим интерфейсом WMP и API .NET, но у Metaflac и APEv2 нет даже этого. На самом деле довольно часто в комментариях Metaflac можно увидеть как «Artist» из старого имени поля ID3v1, так и «ARTIST» из Vorbis.
И даже для ID3v2 сопоставления не идеальны — iTunes показывает кадр «TPE1» как «Исполнитель» и «TPE2» как «Исполнитель альбома», в то время как Foobar2000 показывает TPE2 как «Исполнитель», а TXXX:ИСПОЛНИТЕЛЬ АЛЬБОМА как «Исполнитель альбома». ".
Итак, чтобы сделать это правильно, вам нужно просмотреть iTMF, Vorbiscomment, ID3v2 (или см. Википедию) и 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 и вики, и различные другие проекты превратили эту информацию в простые таблицы сопоставления тегов, которые вы можете просто взять и позаимствовать для своего кода, например эта один от MusicBrainz. MusicBrainz Picard даже имеет оболочку Mutagen, которая позволяет вам использовать согласованный набор имен метаданных (описанных здесь) со всеми типами тегов.
person
abarnert
schedule
05.10.2013