Я наследовал приблизительно 2 000 файлов MP3. Для большинства их их ID3 отмечает дисплей, искаженный на Amarok. Мне нужно программное обеспечение, которое обновляет теги ID3 до типа v2.4 $03
(т.е. кодировка UTF-8), удаляет любые теги v1 и также умен о выяснении исходного кодирования в зависимости от конкретного случая (скорее всего, один из Windows 1252, BOM-less UTF-16 или GB18030).
Прежде чем я начну программировать это самостоятельно сверху TagLib, уже есть ли такое полное решение, которое я мог использовать?
Не рекомендуйте Musicbrainz – он в большой степени смещается к опубликованной музыке Соединенных Штатов и почти бесполезный мне. Не рекомендуйте общее программное обеспечение меток ID3, не тестируя его сначала против моих требований – большинство из них
Я также еще не заинтересован очисткой тега, массовое программное обеспечение переименования или классификации только; я сначала имею, делают вышеупомянутый шаг нормализации.
Вы хотите Исключая Falso, редактор тегов, включенный в Тюрьму проект Libet. Picard (теггер MusicBrainz) может пользоваться той же библиотекой меток, но QL породил его.
В частности, Вы хотите библиотеку меток Мутагена, которая поддерживает id3v2.4 (и "поддержкой" я имею в виду, "осуществляют"... в военном отношении...). Это также прекрасно с кодировками символов и включает основной scriptable теггер командной строки (mid3v2
). Насколько Ваш шаг нормализации идет, Мутаген только сохраняет теги в ID3v2.4. Это, конечно, способно к преобразованию всего текста в UTF-8, но Вы, возможно, должны написать сценарий этого сами (я полагаю что mid3v2
значения по умолчанию инструмента должны сохранить текущее кодирование, если это возможно, и я не знаю, можно ли ему сказать сохранить все в конкретном кодировании). Мутаген записан в Python.
Исключая Falso хороший, чистый GUI и поддерживает большинство главных retag-multiple-files функций, которые Вы ожидали бы. Я не думаю, что это делает много в способе интернет-поисков, и я не знаю, как это с иллюстрациями альбома - Тюрьма, Libet может поддерживать это; Исключая Falso может сделать это с плагином, должен каждый существовать, хотя нельзя было бы существовать. Мне никогда не была нужна та функциональность - я использую EF и mid3v2
на концерте для обработки моих потребностей переметок.
Я не думаю, что Вы собираетесь найти автономное применение, которое согласует Ваш конкретный выбор неправильно отмеченной кодировки. Имение смеси cp1252, UTF-16 и ГБ 18030 довольно необычно, и я не думаю, что существующее программное обеспечение сможет решить это автоматически.
Таким образом, я загрузил бы Мутаген и записал бы пользовательский сценарий 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()
Вышеупомянутый сценарий делает несколько предположений:
Только теги, отмеченные как являющийся в кодировании 0, являются неправильными. (Якобы кодирование 0 является ISO-8859-1, но на практике это часто - кодовая страница значения по умолчанию Windows.)
Если тег отмечен как являющийся в UTF-8 или кодировке UTF-16, это, как предполагается, корректно, и просто преобразовывается в UTF-8, если это уже не. Лично я не видел ID3s, отмеченный как UTF (кодировка 1-3) по ошибке прежде. К счастью кодирование 0 легко восстановить в его исходные байты, так как ISO-8859-1 является 1 к 1 прямым отображением порядковых значений байта.
Когда кодирование 0 тегов встречено, сценарий пытается переделать его как GB18030 сначала, затем если это не допустимые падения назад к кодовой странице 1252. Однобайтовая кодировка как cp1252 будет иметь тенденцию соответствовать большинству последовательностей байта, поэтому лучше помещать их в конце списка кодировки для попытки.
Если у Вас будет другая кодировка как cp1251 кириллица или много cp1252 имен файлов с несколькими символами с диакритикой подряд, которые приняты за GB18030, то Вам будет нужен более умный какой-то алгоритм предположения. Возможно, посмотрите на имя файла для предположения, какие символы, вероятно, будут присутствовать?
Функции (среди других):
Пакетная Запись Редактирования Тега ID3v1.1, ID3v2.3, ID3v2.4, MP4, WMA, Теги APEv2 и Комментарии Vorbis в несколько файлов сразу.
Импорт из Amazon, discogs, freedb, MusicBrainz Сохраняют ввод и импортируют теги из баз данных онлайн как Amazon, discogs, freedb, MusicBrainz, и т.д.
Символы замены или слова Строки замены в тегах и именах файлов (с поддержкой Регулярных выражений).
Полный Пользовательский интерфейс Поддержки Unicode и метки являются полностью совместимым Unicode.
Foobar имеет довольно полную поддержку меток. Это работает под вином.
существует также EasyTag
EasyTAG является утилитой для просмотра и редактирования тегов для MP3, MP2, MP4/AAC, FLAC, Ogg Vorbis, MusePack, файлов Аудио и WavPack Обезьяны. Его простой и хороший интерфейс GTK + делает метки легче под GNU/Linux или Windows.
также Вы могли бы хотеть знать, что id3v2.3 является обычно предпочтительным форматом, потому что Windows Media Player не поддерживает 2.4