10

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

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

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

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

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

5 ответов5

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

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, вам понадобится более умный алгоритм угадывания. Может быть, посмотрите на имя файла, чтобы угадать, какие символы могут присутствовать?

0

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

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

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

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

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

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

-1

Foobar имеет довольно полную поддержку тегов. Это бежит под вином.

-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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .