Ripara la codifica dei tag ID3


12

Ho ereditato circa 2000 file MP3. Per la maggior parte di essi, i loro tag ID3 vengono visualizzati confusi in Amarok. Ho bisogno di un software che aggiorni i tag ID3 al tipo v2.4 $03(ad es. Codifica UTF-8), rimuova tutti i tag v1 ed sia anche intelligente nel capire la codifica originale caso per caso (molto probabilmente uno dei Windows-1252, senza BOM UTF-16 o GB18030).

Prima di iniziare a programmarlo da solo su TagLib, esiste già una soluzione così completa che potrei usare?

Non raccomandare Musicbrainz - è fortemente di parte per la musica pubblicata negli Stati Uniti e quasi inutile per me. Non raccomandare il software di codifica ID3 generale senza prima verificarlo rispetto ai miei requisiti, molti dei quali

  • non supporta v2.4
  • hanno, francamente detto, tranquille idee ritardate sulla codifica dei personaggi
  • non ho funzioni di automazione (non voglio passare il tempo a modificare manualmente).

Inoltre, non sono (ancora) interessato solo al software di pulizia dei tag, rinominazione di massa o categorizzazione; Per prima cosa ho fatto il passaggio di normalizzazione sopra menzionato.

Risposte:


9

Vuoi Ex Falso, l'editor di tag incluso nel progetto Quod Libet . Picard (il tagger di MusicBrainz) può usare la stessa libreria di tag, ma QL l'ha originata.

In particolare, vuoi la libreria di tagging Mutagen , che supporta id3v2.4 (e per "supporto" intendo "imporre" ... militarmente ...). È anche eccellente con le codifiche dei caratteri e include un tagger a riga di comando ( mid3v2). Per quanto riguarda la fase di normalizzazione, Mutagen salva i tag solo in ID3v2.4. È certamente in grado di convertire tutto il testo in UTF-8, ma potrebbe essere necessario copiarlo da solo (credo che i mid3v2valori predefiniti dello strumento siano mantenere la codifica corrente ove possibile, e non so se si può dire di salvare tutto in una particolare codifica). Mutagen è scritto in Python.

Ex Falso è una GUI bella e pulita e supporta la maggior parte delle funzionalità di retag-multiple-file che ti aspetteresti. Non penso che faccia molto per quanto riguarda le ricerche su Internet e non so come sia con le copertine degli album - Quod Libet potrebbe supportarlo; Ex Falso può farlo con un plugin, se uno esiste, anche se uno potrebbe non esistere. Non ho mai avuto bisogno di quella funzionalità: utilizzo EF e mid3v2in concerto per gestire le mie esigenze di ricodifica.

Ex Falso, parte del progetto Quod Libet


mid3v2è solo metà della soluzione. Dopo averlo provato, sicuramente non va bene con le codifiche erroneamente identificate di cui soffro, ovvero un tag ID3 aggiornato viene ancora visualizzato in modo errato in Amarok. Mutagen non soddisfa le mie esigenze di "intelligente di capire la codifica originale"; assume allegramente Latin1/ Windows-1252, che è conforme standard, ma inutile per il mondo reale disordinato. Sono propenso a non accettare questa risposta in questo momento; Darò qualche giorno in più di opportunità per altre risposte. Se non arriva nulla di buono, vieni accettato.
daxim

perfettamente accettabile. se sei un programmatore Python, potresti prendere in considerazione la possibilità di scrivere uno script che utilizza Mutagen per a) leggere nel tag esistente, b) eseguire alcuni passaggi di conversione intelligenti (basati su ciò che sospetti o conosci per essere la codifica di origine), ec ) scrivi un nuovo tag. sembra che sia principalmente il passaggio di conversione a mid3v2non essere troppo brillante e che non mi sorprende ... ma penso che Python abbia alcuni moduli di codifica dei caratteri (forse iconvo simili) che sono più intelligenti e potrebbero essere utili a un fai-da-te ER.
Quack Quixote

non sono un programmatore di python o avrei qualche suggerimento più utile. forse qualcuno su stackoverflow avrebbe idee migliori se finissi per scrivere la tua sceneggiatura.
Quack Quixote

9

Non credo che troverai un'applicazione standalone che risolverà la tua particolare selezione di codifiche con tag errati. Avere una miscela di cp1252, UTF-16 e GB-18030 è abbastanza insolito e non credo che i software esistenti saranno in grado di risolverli automaticamente.

Quindi scaricare Mutagen e scrivere uno script Python personalizzato per automatizzare le proprie decisioni su come correggere codifiche sconosciute. Per esempio:

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

Lo script sopra fa alcune ipotesi:

  1. Solo i tag contrassegnati come presenti nella codifica 0 sono errati. (La codifica evidentemente 0 è ISO-8859-1, ma in pratica è spesso una tabella codici predefinita di Windows.)

  2. Se un tag è contrassegnato come codificato in UTF-8 o UTF-16, si presume che sia corretto e semplicemente convertito in UTF-8 se non lo è già. Personalmente non ho mai visto prima ID3 contrassegnati come UTF (codifiche 1-3). Fortunatamente la codifica 0 è facile da recuperare nei suoi byte originali poiché ISO-8859-1 è una mappatura diretta da 1 a 1 dei valori dei byte ordinali.

Quando viene soddisfatto un tag di codifica 0, lo script tenta di ripeterlo prima come GB18030, quindi se non è valido ricade nella tabella codici 1252. Le codifiche a byte singolo come cp1252 tenderanno a corrispondere alla maggior parte delle sequenze di byte, quindi è meglio metterle alla fine dell'elenco di codifiche da provare.

Se hai altre codifiche come cp1251 Cyrillic o molti nomi di file cp1252 con più caratteri accentati in una riga, che vengono scambiati per GB18030, avrai bisogno di un algoritmo di indovinare più intelligente di qualche tipo. Forse guarda il nome del file per indovinare quale tipo di caratteri è probabile che siano presenti?


+1, bell'esempio di script e una buona spiegazione di cosa fa e di quali ipotesi fa. li ho divisi per renderli più ovvi; spero non ti dispiaccia.
Quack Quixote

0

Che ne dici di Mp3Tag con Wine ?

Caratteristiche (tra gli altri):

Modifica tag batch Scrivere ID3v1.1, ID3v2.3, ID3v2.4 , MP4, WMA, tag APEv2 e commenti Vorbis su più file contemporaneamente.

Importa da Amazon, discogs, freedb, MusicBrainz Salva la digitazione e importa i tag da database online come Amazon, discogs, freedb, MusicBrainz e altri.

Sostituisci caratteri o parole Sostituisci stringhe nei tag e nei nomi di file (con supporto per le espressioni regolari).

Supporto Unicode completo L'interfaccia utente e il tagging sono completamente conformi Unicode.



-1

c'è anche EasyTag

EasyTAG è un'utilità per la visualizzazione e la modifica di tag per file MP3, MP2, MP4 / AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio e WavPack. La sua semplice e simpatica interfaccia GTK + semplifica il tagging in GNU / Linux o Windows.

inoltre potresti voler sapere che id3v2.3 è di solito un formato preferibile, perché Windows Media Player non supporta 2.4


le persone che insistono nel seguire le specifiche v2.4 generalmente non sono interessate a ciò che Windows Media Player supporta o non supporta ...
quack quixote
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.