2016-01-14 4 views
0

Я пытаюсь автоматизировать некоторые теги ID3 с Mutagen, но всякий раз, когда я пытаюсь вставить символы юникода, я заменяю их на вопросительные знаки.Python3 Mutagen не выводит теги unicode

Наименьший тестовый код, который приводит к ошибке выглядит следующим образом

from mutagen.id3 import ID3, TALB 

audio = ID3() 
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest') 
audio.save('test.mp3', v1=2) 

При запуске альбома тег test.mp3 показывает вверх как test??test как в моем файловом менеджере и музыкального проигрывателя. Если я вручную вводить теги Unicode через файловый менеджер, символы Unicode отображаются нормально без проблем.

Вещи, которые я уже пробовали, чтобы исправить эту проблему:

  • Пытаюсь с и без u строки префикса
  • Использование альтернативного Mutagen мечения синтаксис (audio.add(TALB(encoding=3, text=u'test祥さtest')))

I ', используя аргумент v1=2 для функции save, так как ее исключение приводит к получению примерно половины файлов, не содержащих их тегов (и unicode все еще выводится как вопрос m arks), а другие значения отказываются писать теги ID3 для любых файлов.


Я использую Windows 10 64bit. Моей средой Python являются Anaconda3 (Python3.4) и Python2.7, и они приводят к одной и той же проблеме с тем же кодом.

+0

ID3v1 теги не могут Unicode, поэтому вопросительные знаки ожидаются. Реальная проблема заключается в том, почему теги ID3v2 не отображаются. – bobince

ответ

2

Итак, я думаю, что ваша главная проблема заключается в том, что ваш способ тестирования, если теги правильные, имеет некоторые проблемы. Позволь мне объяснить.

Для меня этот код работает:

from mutagen.id3 import ID3, TALB 

audio = ID3() 
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest') 
audio.save("test.mp3",v1=0) 

Проверка файла в текстовом редакторе показывает теги правильно написанные в Unicode.

Итак, почему вы не видите теги? Вероятно, потому, что мутаген по умолчанию записывает теги ID3v2.4, которые не будут читать ни Windows File Explorer, ни какой-либо из стандартных проигрывателей Windows. Однако, когда вы добавили аргумент v1=2, вы вынудили мутаген к также пишите ID3v1 теги. Эти являются, которые можно прочитать в Проводнике, но, к сожалению, не поддерживают Unicode. Вот почему вы видите вопросительные знаки. Поэтому нам полезно, когда вы хотите использовать Unicode, добавить v1=0 (как я уже сделал), чтобы предотвратить запись любых тегов ID3v1 и отвлечение внимания на основную проблему при работе с тегами ID3v2.

Так что теперь перейти к ID3v2.3 вместо ID3v2.4 и посмотреть, если это помогает:

from mutagen.id3 import ID3, TALB 

audio = ID3() 
audio.update_to_v23() 
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest') 
audio.save("test.mp3",v1=0,v2_version=3) 

Наконец, лучший способ, чтобы увидеть, какие теги действительно в файле, чтобы использовать специальный редактор тегов который всесторонне следует спецификации, как Mp3tag. Это помогает выяснить, является ли проблема тем, как вы пишете теги, или как ваш плеер их читает.