Восстановление кодировки тегов ID3


12

Я унаследовал около 2000 файлов MP3. Для большинства из них их теги ID3 искажены в Amarok. Мне нужно программное обеспечение, которое обновляет теги ID3 до типа v2.4 $03(т. Е. Кодирование UTF-8), удаляет все теги v1, а также умен, чтобы выяснить оригинальную кодировку на индивидуальной основе (наиболее вероятно, один из Windows-1252, без спецификации UTF-16 или GB18030).

Прежде чем я начну программировать это самостоятельно на TagLib, есть ли такое законченное решение, которое я мог бы использовать?

Не рекомендую Musicbrainz - он сильно пристрастен к опубликованной в США музыке и почти бесполезен для меня. Не рекомендуйте стандартное программное обеспечение для тегирования ID3 без предварительного тестирования его в соответствии с моими требованиями - большинство из них

  • не поддерживает v2.4
  • откровенно сказал, тихо отсталые идеи о кодировании символов
  • не имеют функций автоматизации (я не хочу тратить свое время на редактирование вручную).

Меня также (пока) не интересует только программное обеспечение для очистки тегов, массового переименования или категоризации; Сначала я должен сделать вышеупомянутый шаг нормализации.

Ответы:


9

Вам нужен Ex Falso, редактор тегов, включенный в проект Quod Libet . Picard (тегер MusicBrainz) может использовать ту же библиотеку тегов, но QL создал ее.

В частности, вам нужна библиотека тегов Mutagen , которая поддерживает id3v2.4 (и под «поддержкой» я имею в виду «принудительное исполнение» ... в военном отношении ...). Он также отлично работает с кодировками символов и включает в себя базовый сценарий командной строки ( mid3v2). Что касается вашего шага нормализации, Mutagen сохраняет только теги в ID3v2.4. Он, безусловно, способен конвертировать весь текст в UTF-8, но вам, возможно, придется написать это самостоятельно (я считаю, что mid3v2по умолчанию инструмент сохраняет текущую кодировку там, где это возможно, и я не знаю, можно ли сказать, что сохранить все в определенной кодировке). Мутаген написан на Python.

Ex Falso - это приятный, чистый графический интерфейс, поддерживающий большинство основных функций retag-множественных файлов, которые вы ожидаете. Я не думаю, что это сильно влияет на поиск в Интернете, и я не знаю, как обстоят дела с обложками альбомов - Quod Libet может это поддержать; Ex Falso может сделать это с помощью плагина, если он существует, хотя он может и не существовать. Мне никогда не была нужна эта функциональность - я использую EF и mid3v2согласованно, чтобы справиться со своими потребностями в переназначении

Ex Falso, часть проекта Quod Libet


mid3v2это только половина решения. После того, как я попробовал его, это определенно не очень хорошо с ошибочно идентифицированными кодировками, от которых я страдаю, то есть обновленный тег ID3 по- прежнему отображается неправильно в Amarok. Мутаген не выполняет мое требование о «умном вычислении оригинальной кодировки»; это беспечно предполагает Latin1/ Windows-1252, что является стандартным соответствием, но бесполезно для грязного реального мира. Я склонен не принимать этот ответ прямо сейчас; Я дам еще несколько дней для других ответов. Если ничего хорошего не приходит, вас принимают.
Даксим

вполне приемлемо. если вы программист на python, вы можете написать скрипт, который использует Mutagen для: а) чтения в существующем теге, б) выполнения некоторых шагов умного преобразования (в зависимости от того, что вы подозреваете или знаете, какова исходная кодировка), и с ) написать новый тег. Похоже, это в основном шаг преобразования, который mid3v2не слишком яркий, и это меня не удивляет ... но я думаю, что в python есть некоторые модули кодирования символов (возможно, iconvили похожие), которые умнее и могут быть полезны для DIY- э.
Quackote Quixote

Я сам не большой программист на Python, или у меня есть еще несколько полезных советов. возможно, у кого-то из stackoverflow будут лучшие идеи, если вы в итоге будете писать свой собственный скрипт.
шарлатан Quixote

9

Я не думаю, что вы найдете отдельное приложение, которое исправит ваш конкретный выбор неправильно маркированных кодировок. Наличие смеси cp1252, UTF-16 и GB-18030 довольно необычно, и я не думаю, что существующее программное обеспечение сможет решить эту проблему автоматически.

Поэтому я бы скачал Mutagen и написал собственный скрипт на Python, чтобы автоматизировать ваши собственные решения о том, как исправить неизвестные кодировки. Например:

musicroot= ur'C:\music\wonky'
tryencodings= 'gb18030', 'cp1252'

import os
import mutagen.id3

def findMP3s(path):
    for child in os.listdir(path):
        child= os.path.join(path, child)
        if os.path.isdir(child):
            for mp3 in findMP3s(child):
                yield mp3
        elif child.lower().endswith(u'.mp3'):
            yield child

for path in findMP3s(musicroot):
    id3= mutagen.id3.ID3(path)
    for key, value in id3.items():
        if value.encoding!=3 and isinstance(getattr(value, 'text', [None])[0], unicode):

            if value.encoding==0:
                bytes= '\n'.join(value.text).encode('iso-8859-1')
                for encoding in tryencodings:
                    try:
                        bytes.decode(encoding)
                    except UnicodeError:
                        pass
                    else:
                        break
                else:
                    raise ValueError('None of the tryencodings work for %r key %r' % (path, key))
                for i in range(len(value.text)):
                    value.text[i]= value.text[i].encode('iso-8859-1').decode(encoding)

            value.encoding= 3
    id3.save()

Приведенный выше скрипт делает несколько предположений:

  1. Только теги, помеченные как находящиеся в кодировке 0, неверны. (Якобы кодирование 0 - это ISO-8859-1, но на практике это часто кодовая страница Windows по умолчанию.)

  2. Если тег помечен как кодировка UTF-8 или UTF-16, он считается правильным и просто конвертируется в UTF-8, если его еще нет. Лично я не видел ID3, помеченных как UTF (кодировки 1-3) по ошибке раньше. К счастью, кодирование 0 легко восстановить в исходные байты, поскольку ISO-8859-1 является прямым отображением порядковых значений байтов 1: 1.

Когда встречается тег кодирования 0, сценарий пытается сначала преобразовать его в GB18030, а затем, если он недопустим, возвращается к кодовой странице 1252. Однобайтовые кодировки, такие как cp1252, будут стремиться соответствовать большинству байтовых последовательностей, поэтому лучше поместить их в конце списка кодировок попробовать.

Если у вас есть другие кодировки, такие как cp1251 Cyrillic, или множество имен файлов cp1252 с несколькими символами ударения в строке, которые ошибочно принимают за GB18030, вам потребуется какой-то более умный алгоритм угадывания. Может быть, посмотрите на имя файла, чтобы угадать, какие символы могут присутствовать?


+1, хороший пример сценария и хорошее объяснение того, что он делает и какие предположения он делает. я разделил их, чтобы сделать их более очевидными; надеюсь, ты не возражаешь.
шарлатанство

0

Как насчет mp3Tag с вином ?

Особенности (среди прочих):

Пакетное редактирование тегов Запись ID3v1.1, ID3v2.3, ID3v2.4 , MP4, WMA, APEv2 тегов и Vorbis Комментарии к нескольким файлам одновременно.

Импорт из Amazon, Discogs, freedb, MusicBrainz Сохраняйте набор текста и импортируйте теги из онлайн-баз данных, таких как Amazon, Discogs, freedb, MusicBrainz и других.

Заменить символы или слова Заменить строки в тегах и именах файлов (с поддержкой регулярных выражений).

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



-1

есть также EasyTag

EasyTAG - это утилита для просмотра и редактирования тегов для файлов MP3, MP2, MP4 / AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio и WavPack. Его простой и приятный интерфейс GTK + облегчает тегирование в GNU / Linux или Windows.

Также вы можете знать, что формат id3v2.3 обычно предпочтительнее, поскольку Windows Media Player не поддерживает 2.4.


Люди, которые настаивают на том, чтобы следовать спецификации v2.4, как правило, не интересуются тем, что проигрыватель Windows Media делает или не поддерживает ...
Quack Quixote
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.