2013-08-02 7 views
0

Я пытаюсь использовать 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()) 

ответ

1

У меня такой же вопрос, как и вы. И я попытался

from mutagen.id3 import ID3, TIT2, TIT3, TALB, TPE1, TRCK, TYER` 
tags = ID3() 
tags['TIT2'] = TIT2(encoding=3, text=u'just a title') #title 
tags['TYER'] = TYER(encoding=3, text=u'2000') #year 
tags['TRCK'] = TRCK(encoding=3, text=u'9') #trackno 
tags.save('111.mp3') 

таким образом, что кажется, чтобы быть в состоянии изменить теги без обеспечения предыдущих тегов пусты, но когда я проверить эти тег в питоне, как я обнаружил, что рама TYER переоделась в TDRC, и я не знаю, почему

+0

Это исправить проблему с год не меняется, если есть что-то там. Теперь все, что осталось, это проблемы с тегами «исполнителя альбома» и «жанра». (Кстати, это было спасение («111.mp3»), которое это сделало.) – Blrp

0

экономии Try следующий

audio.save(v2_version=3) 

это исправило проблему в моем случае.

Edit: это потому, что TYER TDAT TORY являются V2.3 теги и переоделся в v2.4 Источник: https://en.wikipedia.org/wiki/ID3#ID3v2_frame_specification

+0

Некоторое объяснение того, что это делает и почему вы ожидаете, что это может решить проблему OPs, было бы неплохо. –

 Смежные вопросы

  • Нет связанных вопросов^_^