Configurar la etiqueta de título ID3 para que sea igual al nombre del archivo MP3


14

¿Alguien tiene un script bash que pasará por una biblioteca de medios y establecerá la etiqueta de título id3 de cada archivo MP3 para que sea igual al nombre del archivo?

Estoy abierto a otros métodos automatizados también. Puede ser una aplicación GUI o cualquier cosa que haga el trabajo automáticamente.

Aquí se observa un método EasyTag: cómo cambiar el nombre de la etiqueta de título masivo en archivos mp3 ID3 - Desafortunadamente, no entiendo los pasos.


Puedes responder tu propia pregunta. Enumere los pasos que encontró ubuntuforums.orgy cite su fuente. :) Esto ayudará a los futuros visitantes a Superusuario, en caso de que el ubuntuforums.orgenlace no esté disponible.
iglvzx

3
Aquí hay algunos consejos: 1) No desordene su pregunta con "editar 1", "editar 2", etc. Resuelva los problemas usando comentarios. 2) Si encuentra una solución, publíquela como respuesta, como si estuviera tratando de responder la pregunta de otra persona. No pongas la respuesta en la pregunta . Ahí no es donde la gente lo busca :) Además, use comillas en bloque para cualquier cosa que cite en otro lugar (consulte la ayuda de formato).
slhck

Hice un script para etiquetar correctamente los archivos MP3 en el formato "Artist - Track.mp3" y luego renombrar el archivo a "Track.mp3": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 usandoeyed3
Zach Saucier

Respuestas:


17

EasyTAG es de hecho una gran herramienta para este problema. Encontré mi respuesta aquí . En términos de cómo usarlo, la mejor referencia resulta ser la propia documentación de EasyTAG .

Abra EasyTag, navegue a una carpeta con archivos de música, seleccione todos los archivos en la carpeta o todos los archivos que desee etiquetar, haga clic en el botón "Escanear archivos" (tendrá que pasar el mouse sobre ellos para descubrir cual es)

Luego, asegúrese de que el menú desplegable del escáner esté configurado en "Etiqueta de relleno", luego en el campo Etiqueta de relleno, realice las ediciones apropiadas hasta que el ejemplo debajo del campo se vea como lo que está buscando. Si necesita más ayuda sobre qué poner en el campo Etiqueta de relleno, haga clic en "?" botón para la leyenda (lista de cuáles son los diferentes códigos posibles para traducir) y presione el botón de máscara para enumerar algunos puntos de partida.

Cuando esté satisfecho con los resultados, haga clic en el botón "Escanear archivos" (en el cuadro de diálogo Escanear archivos, no en el que hizo clic originalmente para llegar a donde está ... los iconos se ven iguales) y sus cambios se aplicarán . Si no está obteniendo el nombre del Artista o del Álbum, simplemente seleccione todo lo que desea cambiar, ingrese los datos y haga clic en el pequeño botón al lado de ese campo y todos los archivos seleccionados se completarán o cambiarán a ese artista o álbum. Esto funciona en la mayoría de los campos.

Cuando haya terminado, haga clic en el botón Guardar y listo.

PD: El escáner CDDB a menudo funciona bastante bien, si tiene álbumes completos que está intentando etiquetar, o al menos archivos de canciones disponibles comercialmente.

PPS: Parece que todavía estoy medio despierto. De acuerdo con lo que escribió en su publicación original, intente esto en el campo Etiqueta de relleno:

%n. %a - %t

Aquí está la sección que es relevante para esta pregunta:


1.2.2. Automáticamente con el escáner "Fill Tag":

Algunas condiciones para usar este modo:

  • archivos ordenados por álbumes
  • los nombres de archivo o el directorio principal contienen información de etiquetas (artista, álbum, título, ...)
  • etiquetas vacías o no correctas

El escáner "Etiqueta de relleno" utiliza un patrón para asociar palabras en el nombre de archivo y directorios con las entradas de etiqueta. De esta manera, los campos de etiqueta se pueden completar automáticamente presionando el botón "verde" en la ventana del escáner o la barra de herramientas. Si la etiqueta se completa parcialmente, use la opción "Sobrescribir campos al escanear la etiqueta" en la pestaña "Escáner" de la ventana "Preferencias", para reemplazar todos los campos por los nuevos valores.

Cada código corresponde a un campo, siguiendo estas reglas:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Nota: para evitar errores, se recomienda usar un código solo una vez en el patrón. Por supuesto, al etiquetar manualmente, el escáner solo procesa los archivos seleccionados. Puede usar los patrones definidos en la lista, o escribir los suyos propios para que correspondan con el formato de sus nombres de archivo y directorios. Para evitar errores al seleccionar el patrón correcto o al escribirlo, una vista previa muestra inmediatamente los resultados antes de aplicar el patrón. Si necesita ayuda con los diferentes códigos, presione el botón "Ayuda" (el salvavidas) para mostrar la leyenda de cada código. Además, si desea guardar sus propios patrones, edite u ordene, presionando el botón "Máscara" se mostrará un pequeño editor en la ventana del escáner.

A continuación, un ejemplo de uso de patrones:

a) el siguiente nombre de archivo:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

He encontrado una variedad de herramientas de línea de comandos que son útiles:

id3v2

id3v2 es un editor de etiquetas id3v2 de línea de comando. Puede agregar / modificar / eliminar etiquetas id3v2 y convertir etiquetas id3v1 en etiquetas id3v2. Utiliza id3lib. Estoy buscando un co-mantenedor. Envíe un correo electrónico a myers_carpenter si está interesado.

eyeD3

eyeD3 es un módulo y programa de Python para procesar etiquetas ID3. También se proporciona información sobre archivos mp3 (es decir, velocidad de bits, frecuencia de muestreo, tiempo de reproducción, etc.). Los formatos admitidos son ID3 v1.0 / v1.1 y v2.3 / v2.4.

Estos son ideales cuando se escribe algo para escanear directorios.


2

Esto no siempre es perfecto, pero lo he usado para obtener los nombres de los archivos mp3 utilizando solo herramientas comunes de Unix (incluidas las versiones de busybox). Quizás alguien con más de 6 mp3 Tom Petty pueda probarlo más.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Editar: leí mal la pregunta, pero sabiendo esto arriba, podemos usar sed para reemplazar $ TITLE con el nombre del archivo "$ x" usando sed para reemplazar la cadena en su lugar

sed -i "s/$TITLE/$x/" "$x"

Estoy casi 100% seguro de que esto no cumple con todas las especificaciones ID3, pero puede ser suficiente para el uso personal básico siempre que haga una copia de seguridad primero


Gracias. Encontré una manera de lograr mi objetivo usando EasyTAG, pero su respuesta en realidad responde mejor a mi pregunta original. Strings es una buena utilidad para conocer. (No lo he usado antes). ¿Podría publicar una solución completa basada en su edición para que pueda estar seguro de entender el cambio sugerido?
MountainX

2

Para Ubuntu 18.04 LTS (supongo que todos los sabores de Debian funcionarán bien):

  • Instale eyeD3 con sudo apt install eyeD3

  • Cree un archivo para el script bash (usé "touch"; puede usar el editor de texto que desee)

  • Copie esto y péguelo en el archivo:

    Copia el nombre del archivo y lo escribe en la etiqueta Título

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Si no le interesa ver el progreso, omita la línea echo $a sobre la palabra "hecho".

  • Hacer el archivo ejecutable:

    chmod +x filename
  • Copie el script en el directorio en el que desea que se ejecute: el que contiene sus archivos multimedia; por ejemplo:

    cp filename /music/directory
  • Navegue hasta el directorio en el que acaba de copiar el script:

    cd /music/directory
  • Ejecute el script:

    ./filename

    HECHO

Funcionó para mí en Ubuntu 18.04 LTS: mi esposa me escribió esto en aproximadamente 3 minutos, por lo que no puedo responder ninguna pregunta si no funciona para usted; No soy un experto en programación, estoy configurando esta web, dns, ssh, sftp, ftp, AD / Domain, archivo, firewall, enrutador / servidor tipo :-) ODIO hacer secuencias de comandos, programación y cosas por el estilo. ME ENCANTA aprovechar las secuencias de comandos, la programación y cualquier cosa similar :-)


1

Me sorprende que nadie haya sugerido la solución más fácil usando ffmpego avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

Instalaría eyeD3 en un python virtualenv con el pip install eyeD3que obtendrás la versión más reciente. Después de esa carrera:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
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.