Reparación de codificación de etiquetas ID3


12

He heredado unos 2000 archivos MP3. Para la mayoría de ellos, sus etiquetas ID3 se muestran confusas en Amarok. Necesito un software que actualice las etiquetas ID3 al tipo v2.4 $03(es decir, la codificación UTF-8), elimine las etiquetas v1 y también sea inteligente para averiguar la codificación original caso por caso (muy probablemente una de Windows-1252, UTF-16 o GB18030 sin BOM).

Antes de comenzar a programar esto solo sobre TagLib, ¿existe una solución tan completa que pueda usar?

No recomiendo Musicbrainz: está muy sesgado a la música publicada en los Estados Unidos y es casi inútil para mí. No recomiendo el software de etiquetado ID3 general sin probarlo primero según mis requisitos, la mayoría de ellos

  • no es compatible con v2.4
  • tengo, francamente dicho, ideas tranquilas y retardadas sobre la codificación de caracteres
  • no tienen funciones de automatización (no quiero pasar mi tiempo editando manualmente).

Tampoco estoy (todavía) interesado en la limpieza de etiquetas, cambio de nombre masivo o software de categorización solamente; Primero hice el paso de normalización mencionado anteriormente.

Respuestas:


9

Desea Ex Falso, el editor de etiquetas incluido en el proyecto Quod Libet . Picard (el etiquetador MusicBrainz) puede usar la misma biblioteca de etiquetado, pero QL la originó.

En particular, desea la biblioteca de etiquetado Mutagen , que admite id3v2.4 (y por "soporte" me refiero a "imponer" ... militarmente ...). También es excelente con las codificaciones de caracteres e incluye un etiquetador de línea de comandos básico con secuencia de comandos ( mid3v2). En cuanto a su paso de normalización, Mutagen solo guarda etiquetas en ID3v2.4. Ciertamente es capaz de convertir todo el texto en UTF-8, pero es posible que deba escribirlo usted mismo (creo que los mid3v2valores predeterminados de la herramienta son mantener la codificación actual siempre que sea posible, y no sé si se puede decir que guarde todo en una codificación particular). Mutagen está escrito en Python.

Ex Falso es una interfaz gráfica de usuario agradable y limpia, y es compatible con la mayoría de las características principales de retag-multiple-files que esperarías. No creo que haga mucho en la búsqueda de internet y no sé cómo es con las ilustraciones del álbum, Quod Libet puede apoyar eso; Ex Falso puede hacerlo con un complemento, en caso de que exista, aunque uno no exista. Nunca he necesitado esa funcionalidad: uso EF y mid3v2en concierto para manejar mis necesidades de cambio de marca.

Ex Falso, parte del proyecto Quod Libet.


mid3v2Es solo la mitad de la solución. Después de probarlo, definitivamente no es bueno con las codificaciones mal identificadas que estoy sufriendo, es decir, una etiqueta ID3 actualizada todavía se muestra mal en Amarok. Mutagen no cumple mi requisito acerca de »inteligente sobre descifrar la codificación original«; asume alegremente Latin1/ Windows-1252, que es conforme estándar, pero inútil para el mundo real desordenado. Me inclino a no aceptar esta respuesta en este momento; Daré unos días más de oportunidad para otras respuestas. Si no viene nada bueno, te aceptan.
daxim

perfectamente aceptable. Si es un codificador de Python, puede considerar escribir un script que use Mutagen para a) leer en la etiqueta existente, b) realizar algunos pasos de conversión inteligentes (según lo que sospecha o sabe que es la codificación de origen), y c ) escribe una nueva etiqueta. Parece que es principalmente el paso de conversión que mid3v2no es demasiado brillante, y eso no me sorprende ... pero creo que Python tiene algunos módulos de codificación de caracteres (tal vez iconvo similares) que son más inteligentes y podrían ser útiles para un bricolaje. er.
quack quijote el

Yo no soy muy codificador de Python o tendría algunas sugerencias más útiles. tal vez alguien en stackoverflow tenga mejores ideas si terminas escribiendo tu propio script.
quack quijote

9

No creo que vaya a encontrar una aplicación independiente que arregle su selección particular de codificaciones etiquetadas incorrectamente. Tener una mezcla de cp1252, UTF-16 y GB-18030 es bastante inusual y no creo que el software existente pueda resolverlo automáticamente.

Así que descargaría Mutagen y escribiría un script Python personalizado para automatizar sus propias decisiones sobre cómo solucionar codificaciones desconocidas. Por ejemplo:

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

El script anterior hace algunas suposiciones:

  1. Solo las etiquetas marcadas como codificadas 0 son incorrectas. (La codificación aparentemente 0 es ISO-8859-1, pero en la práctica a menudo es una página de códigos predeterminada de Windows).

  2. Si una etiqueta está marcada como en UTF-8 o una codificación UTF-16, se supone que es correcta, y simplemente se convierte a UTF-8 si aún no lo está. Personalmente, no he visto ID3 marcados como UTF (codificaciones 1-3) por error antes. Afortunadamente, la codificación 0 es fácil de recuperar en sus bytes originales, ya que ISO-8859-1 es una asignación directa 1 a 1 de los valores de bytes ordinales.

Cuando se cumple una etiqueta de codificación 0, el script intenta relanzarla primero como GB18030, luego, si no es válida, vuelve a la página de códigos 1252. Las codificaciones de un solo byte como cp1252 tenderán a coincidir con la mayoría de las secuencias de bytes, por lo que es mejor ponerlas al final de la lista de codificaciones para probar.

Si tiene otras codificaciones como cp1251 cirílico, o muchos nombres de archivos cp1252 con múltiples caracteres acentuados en una fila, que se confunden con GB18030, necesitará un algoritmo de adivinación más inteligente de algún tipo. ¿Quizás mire el nombre del archivo para adivinar qué tipo de caracteres es probable que estén presentes?


+1, buen script de ejemplo y una buena explicación de lo que hace y de los supuestos que hace. los separé para hacerlos más obvios; Espero que no te importe.
quack quijote

0

¿Qué tal Mp3Tag con vino ?

Características (entre otras):

Edición de etiquetas por lotes Escriba ID3v1.1, ID3v2.3, ID3v2.4 , MP4, WMA, APEv2 Tags y comentarios Vorbis en varios archivos a la vez.

Importar desde Amazon, discogs, freedb, MusicBrainz Guarde la escritura y la importación de etiquetas de bases de datos en línea como Amazon, discogs, freedb, MusicBrainz y más.

Reemplazar caracteres o palabras Reemplazar cadenas en etiquetas y nombres de archivos (con soporte para expresiones regulares).

Soporte completo de Unicode La interfaz de usuario y el etiquetado son totalmente compatibles con Unicode.



-1

también hay EasyTag

EasyTAG es una utilidad para ver y editar etiquetas para archivos MP3, MP2, MP4 / AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio y WavPack. Su interfaz GTK + simple y agradable facilita el etiquetado bajo GNU / Linux o Windows.

También es posible que desee saber que id3v2.3 suele ser el formato preferible, porque Windows Media Player no es compatible con 2.4


personas que insisten en seguir la especificación v2.4 generalmente no están interesados en lo que hace Windows Media Player o no soporta ...
charlatán quijote
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.