Reparar a codificação de tags ID3

10

Eu herdei cerca de 2000 arquivos MP3. Para a maioria deles, suas tags ID3 são ilegíveis no Amarok. Eu preciso de um software que atualize as tags ID3 para v2.4 tipo $03 (isto é, codificação UTF-8), remove qualquer tag v1, e também é inteligente em descobrir a codificação original caso a caso (a maioria provavelmente um dos modelos Windows-1252, BOM-less UTF-16 ou GB18030).

Antes de começar a programar isso sozinho no topo do TagLib, já existe uma solução tão completa que eu poderia usar?

Não recomende o Musicbrainz - ele é strongmente influenciado pela música publicada nos Estados Unidos e quase inútil para mim. Não recomende software geral de identificação de ID3 sem testá-lo primeiro em relação aos meus requisitos - a maioria deles

  • não suporta v2.4
  • , francamente disse, idéias de retardo mental sobre codificação de caracteres
  • não tem recursos de automação (não quero gastar meu tempo editando manualmente)

Eu também não estou (ainda) interessado apenas em limpeza de tags, renomeação em massa ou software de categorização; Eu primeiramente fiz o passo de normalização acima mencionado.

    
por daxim 02.01.2010 / 18:52

5 respostas

9

Você deseja o Ex Falso, o editor de tags incluído no projeto Quod Libet . O Picard (o tagger do MusicBrainz) pode usar a mesma biblioteca de marcação, mas a QL originou-a.

Em particular, você quer a biblioteca de tags Mutagen , que suporta id3v2.4 (e por " apoio "quero dizer" impor "... militarmente ...). Também é excelente com codificações de caracteres e inclui um marcador de linha de comando scriptável básico ( mid3v2 ). No que diz respeito à sua etapa de normalização, Mutagen somente salva as tags em ID3v2.4. É certamente capaz de converter todo o texto em UTF-8, mas você pode precisar fazer o script sozinho (acredito que os padrões da ferramenta mid3v2 são manter a codificação atual onde for possível, e eu não sei se pode ser disse para salvar tudo em uma codificação específica). Mutagen é escrito em Python.

O Ex Falso é uma GUI agradável e limpa e suporta a maioria dos principais recursos de vários arquivos de retag que você esperaria. Eu não acho que isso faça muito em termos de pesquisas na internet e eu não sei como é a arte do álbum - Quod Libet pode apoiar isso; Ex Falso pode fazê-lo com um plugin, caso exista, embora não exista. Eu nunca precisei dessa funcionalidade - eu uso EF e mid3v2 em concertos para lidar com as minhas necessidades de reimpressão.

    
por 02.01.2010 / 19:17
9

Não acho que você encontre um aplicativo independente que conserte sua seleção específica de codificações marcadas incorretamente. Ter uma mistura de cp1252, UTF-16 e GB-18030 é bastante incomum e eu não acho que o software existente será capaz de resolver isso automaticamente.

Então eu baixei o Mutagen e escrevi um script Python personalizado para automatizar suas próprias decisões sobre como corrigir codificações desconhecidas. Por exemplo:

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()

O script acima faz algumas suposições:

  1. Apenas as marcações marcadas como estando na codificação 0 estão erradas. (Ostensivamente, codificar 0 é ISO-8859-1, mas, na prática, é geralmente uma página de código padrão do Windows.)

  2. Se uma tag estiver marcada como UTF-8 ou uma codificação UTF-16 for considerada correta, basta ser convertida para UTF-8, se ainda não estiver. Pessoalmente eu não vi ID3s marcados como UTF (codificações 1-3) em erro antes. Felizmente, a codificação 0 é fácil de recuperar em seus bytes originais, pois o ISO-8859-1 é um mapeamento direto de 1 para 1 dos valores de bytes ordinais.

Quando uma tag de codificação 0 é atendida, o script tenta reformulá-la como GB18030 primeiro, depois, se ela não for válida, retorna à página de código 1252. Codificações de byte único como cp1252 tenderão a corresponder à maioria das sequências de bytes, portanto é melhor colocá-los no final da lista de codificações para tentar.

Se você tiver outras codificações como cp1251 Cyrillic ou muitos nomes de arquivos cp1252 com vários caracteres acentuados em sequência, que são confundidos com GB18030, você precisará de um algoritmo de adivinhação mais inteligente de algum tipo. Talvez olhe o nome do arquivo para adivinhar que tipo de personagens provavelmente estarão presentes?

    
por 02.01.2010 / 22:18
0

Que tal Mp3Tag com Vinho ?

Recursos (entre outros):

Batch Tag Editing Write ID3v1.1, ID3v2.3, ID3v2.4, MP4, WMA, APEv2 Tags and Vorbis Comments to multiple files at once.

Import from Amazon, discogs, freedb, MusicBrainz Save typing and import tags from online databases like Amazon, discogs, freedb, MusicBrainz, and more.

Replace characters or words Replace strings in tags and filenames (with support for Regular Expressions).

Full Unicode Support User-interface and tagging are fully Unicode compliant.

    
por 03.01.2010 / 06:13
-1

O Foobar tem bastante suporte completo à marcação . Funciona com vinho.

    
por 03.01.2010 / 13:03
-1

também há EasyTag

EasyTAG is a utility for viewing and editing tags for MP3, MP2, MP4/AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio and WavPack files. Its simple and nice GTK+ interface makes tagging easier under GNU/Linux or Windows.

também você pode querer saber que id3v2.3 é geralmente o formato preferível, porque o windows media player não suporta 2.4

    
por 03.01.2010 / 18:21

Tags