Я пытаюсь использовать mutagen (с python 2.7.5), чтобы создать программу, которая, учитывая, что путь к песням «... \ Artist \ Year Album \ Songnumber Title. mp3 ", устанавливает исполнителя, исполнителя альбома, год, альбом, номер песни и теги названия песни и сохраняет жанровый тег. Я попытался сделать это с помощью EasyID3, но у него нет тега исполнителя альбома. Я также пытался сделать это с помощью обычного ID3, но у меня возникло несколько проблем с ним. Вот код, который я использовал:Некоторые теги mutagen не работают
from mutagen.id3 import ID3, TIT2, TPE2, TALB, TPE1, TYER, TDAT, TRCK, TCON, TORY, TPUB
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = ID3(p)
audio.add(TIT2(encoding=3, text=u"t")) #TITLE
audio.add(TRCK(encoding=3, text=u"1")) #TRACK
audio.add(TPE1(encoding=3, text=u"a")) #ARTIST
audio.add(TALB(encoding=3, text=u"al")) #ALBUM
audio.add(TYER(encoding=3, text=u"2000")) #YEAR
audio.add(TDAT(encoding=3, text=u"2001")) #YEAR
audio.add(TORY(encoding=3, text=u"2002")) #ORIGYEAR
audio.add(TPE2(encoding=3, text=u"aa")) #ALBUMARTIST
audio.add(TCON(encoding=3, text=u"g")) #GENRE
audio.save()
Вот таблица я использовал, чтобы найти 4-буквенные коды для каждого тега: http://help.mp3tag.de/main_tags.html
Название, трек, исполнитель и альбом все работало нормально. Для всех полей в свойствах файла mp3> подробности, кроме этих четырех и «год», предыдущие значения были очищены функцией save(), и когда я попытался добавить новые, ничего не произошло. В частности, поля «жанр» и «альбом» не работали. Что касается «года», который имеет как коды TYER, так и TDAT, он не изменился бы вообще, если сначала поле не было пустым, а затем только TYER. «ORIGYEAR» с кодом TORY ничего не делал.
Поле «жанр» на самом деле не полностью сломано - если вы измените его на код python (audio.add (и т. Д.)) Или вручную зайдите в свойства> подробности заранее, save() очистит нестрочные, в таких жанрах, как «Технический death metal» или «mt3jr39kf390», в то время как он работает со встроенными жанрами, такими как «Classic Rock» или «Country», в то время как некоторые целые числа, такие как 1 или 2, превращаются в эти встроенные жанры. (Поле года иногда ведет себя аналогичным образом - если вы вручную задаете значение поля для определенных чисел, save() изменит его на другое число. Я наблюдал это только для значений ниже 800, но не для всех - 448 и 449 остаются неизменными, а 500 превращается в 320, 700 превращается в 448, 12 превращается в 10, а 10 превращается в 8. Если вы меняете 12 до 10 таким образом, а затем снова запускаете программу, ничего не произойдет, но если вы вручную измените это к какой-то другой ценности и обратно к 10, это превратится в 8.)
Итак, проблема в том, что я не могу изменить тег года, если там уже что-то есть, я не могу изменить исполнителя альбома или и я не знаю, как выполнить команду «получить», если есть даже один, чтобы сохранить жанровый тег.
Кроме того, EasyID3 имеет те же проблемы - save() очищает определенные поля и ведет себя странно с жанром и годом. Единственное отличие состоит в том, что можно изменить год, даже если поле не пустое. Вот код, который я использовал:
from mutagen.easyid3 import EasyID3
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = EasyID3(p)
audio["title"] = u"t"
audio["artist"] = u"a"
audio["album"] = "al"
audio["date"] = u"2000"
audio["tracknumber"] = u"1"
audio["genre"] = u"g"
audio.save()
print '\n'.join(EasyID3.valid_keys.keys())
Это исправить проблему с год не меняется, если есть что-то там. Теперь все, что осталось, это проблемы с тегами «исполнителя альбома» и «жанра». (Кстати, это было спасение («111.mp3»), которое это сделало.) – Blrp