Limpiar iTunes
Artículo traducido por Deckart
24/10/2004
En vacaciones, estuve desconectado de la red, por eso empecé a limpiar mi portátil. Durante este proceso, decidí echar un vistazo a los 20 GB de MP3 que residen en mi disco duro para ver cuan complicadamente la base de datos de CD Gracenote (CDDB) los había clasificado. A partir de aquí, pude decidir cuanto esfuerzo tendría que gastar en la limpieza.
¿Qué es el CDDB, y Cómo funciona?
El CDDB funciona bien para música "popular" (ese material que se coloca en "Rock", "Alternativa", y demás). Pero funciona peor para compilaciones, como las "Bandas Sonoras", ya que el término "Varios Artistas" va a parar a la porción del ID del artista. Además, la gente parece realmente tener interés en los artistas, por lo que se especifica el nombre del artista siempre, hasta el extremo que cada canción del CD tiene un artista diferente aunque todas son del mismo CD. La gente casi siempre destroza el arte musical del oeste ("Clásica" para la mayoría de la gente) con lo que la información se puede mostrar en cualquier sitio (nombre de pista en artista, autor en nombre de CD, diferentes lenguajes en descripción para pistas diferentes), y finalmente el único que realmente está bien es el que uno mismo ha tecleado.
Parte de las razones para esto es la historia de las etiquetas MP3 ID3. La primera versión, ID3v1, tenía un limitado número de campos con cortos límites de caracteres. Una versión posterior, ID3v2, tenía más campos y sin las restricciones de longitud de la versión ID3v1. Por ejemplo, ID3v1, no tiene campo "Compositor", y la versión ID3v2 sí lo tiene. Detalles completos, así como descripciones no técnicas, en ambas versiones y futuras direcciones están en el sitio Web ID3. iTunes puede usar cualquier versión, y puede convertir etiquetas ID3v1 en ID3v2.
El CDDB fue originalmente un proyecto comunitario donde el público enviaba los datos del CD y el CDDB los hacía disponibles para cualquiera. Eso se convirtió en CDDB, Inc. en 1995, y eventualmente se renombraron ellos mismos como Gracenote cuando diversificaron su negocio. Sus pautas de envío insinúan las muchas maneras en las cuales la gente ha enviado datos. Algunas de las cosas que deseo limpiar son datos incorrectos, y algunos son asuntos de política de Gracenote con la que estoy en desacuerdo, como insertar "(Disco N)" al final del los nombres de álbum (colección) para conjuntos multi-CD. En mi Biblioteca Musical iTunes, yo pongo las cosas a mi manera.
Arregle esas Descripciones en iTunes
Algunas de las descripciones son fáciles de corregir, y puedo usar algunos scripts de AppleScripts de Doug. El script "Remove n Characters from Front" elimina el mismo número de caracteres de los nombres de todas las pistas en la selección actual, por eso puedo convertir un nombre como "01 Primera Pista" en "Primera Pista" (y el "Número de Pistas en Lista" irá en dirección contraria). Si los nombres de artista y pista están intercambiados, el script "Swap Track & Artist" los pone en su posición correcta.
Empecé a trabajar en un pequeño script en Perl para hacer esta faena por mí, pero ya que uso un Mac, prefiero usar iTunes. Como he probado unas pocas cosas en iTunes, he descubierto que podría hacer el trabajo más fácil y rápido con muy poca programación. La mayoría de los cambios están relacionados con casos especiales, por eso automatizar la tarea no es de mucha ayuda. A veces recurrir a la programación es la manera equivocada de empezar.
Si quiero cambiar la información para una pista, uso el comando "Obtener Información" del menú "Archivo", el cual visualiza un diálogo con tres tabuladores. Bajo el tabulador "Etiqueta" actualizo la información apropiada.
 |
| Pestaña \"Tags\" en la ventana de Obtener Información |
Si cambio la etiqueta en iTunes, él actualiza la base de datos y lista de reproducción de iTunes, actualiza la etiqueta ID en el archivo MP3 actual, y mueve el archivo a un nuevo directorio de artista si mi música está en la Biblioteca Musical iTunes. Esto es muy "güai". Quería reordenar la estructura del directorio por artistas, por lo que estoy matando dos pájaros de un tiro. También uso el plug-in MP3-Info Contextual Menu Item para asegurar que los cambios que hago en iTunes se muestran en el archivo MP3, y a veces para efectuar ediciones simples.
 |
| Items del plug-in \"MP3-Info Contextual Menu\" |
También puedo seleccionar varias pistas de un lista de reproducción y cambiar alguna información de todas a la vez. Se puede hacer una selección contigua manteniendo presionada la tecla Shift, seleccionando el primer elemento, y entonces seleccionando el último elemento, o un elemento no contiguo manteniendo pulsada la tecla Apple y seleccionando únicamente los elementos que se desea. Con múltiples elementos seleccionados, al elegir el elemento del menú "Obtener Info" de nuevo se obtiene un diálogo similar, pero esta vez, el diálogo no tiene tabuladores y sólo muestra la información que todos los archivos tienen en común; por ejemplo, el mismo nombre de artista o álbum. Cualquier cambio afecta a todas las pistas. Otra vez, muy "güai" si el cambio es sencillo.
 |
| Diálogo \"Obtener Info\" para múltiples elementos |
Y Esos Cambios No Tan Sencillos...
Frecuentemente los cambios no son sencillos. Mientras intentaba corregir las etiquetas ID para las English Suites de Glenn Gould, necesitaba coger parte de la antigua cadena del título y combinarla con parte de la antigua cadena del artista. El título tiene el nombre del trabajo principal, mientras el artista tiene el nombre del movimiento en esa pieza (en vez de, por ejemplo, "Glenn Gould" o "Johann Sebastian Bach"). Cada pista tiene una única cadena de artista, y algunas canciones tienen los nombres del trabajo principal, mientras otras están en blanco (terminando con "Track 02" y así) significando que son la continuación de la pista previa.
 |
| English Suites con valores CDDB por defecto |
Esto parece un complicado problema de programación, pero realmente no es tan complejo si se fracciona en pequeños problemas. También frecuentemente veo programadores (ah, eso me incluye también) intentando resolver muchos problemas al mismo tiempo, lo cual hace la solución muy complicada, y complicadas soluciones generan complicados mantenimientos. Unix utiliza pequeñas herramientas encadenadas para completar tareas, y frecuentemente yo empiezo haciendo pequeñas herramientas para terminar el trabajo.
El primer problema es obtener los nombres de pista en orden. Si puedo hacer coincidir la cadena "Pista N" del trabajo principal, he resuelto el problema, y el siguiente problema, combinando ese nombre con el movimiento del nombre, es mucho más fácil.
Un Pequeño AppleScript al Rescate
Yo escribí un pequeño AppleScript para coger las pistas seleccionadas en la lista de reproducción, extraer el "nombre" de la primera pista en la selección, y usarlo para el nombre de las pistas restantes. Necesitaba ser cuidadoso en este punto -- dependiendo de que manera tuviese la lista ordenada (ascendente o descendente en cierta columna), la primera pista puede ser diferente de lo que estoy viendo como primera pista en la ventana.
Esto es un script de prueba para comprobar que esta idea funcionará. No quiero profundizar demasiado en el problema antes de comprobar si funciona.
tell application "iTunes"
set myWindow to browser window 1
set mySelection to selection of myWindow
set myNewName to name of first item in (get the selection of browser window 1)
repeat with myTrack in (get the selection of browser window 1)
set name of myTrack to myNewName
end repeat
end tell
Usé este pequeño script para un par de CDs, y lo desordeno un par de veces porque el nombre correcto no terminaba en myNewName. Añadí un diálogo para permitirme elegir la pista correcta de entre las pistas seleccionadas, y otro diálogo para confirmar la selección y darme la oportunidad de editarlo.
tell application "iTunes"
set myNames to name of selection of browser window 1
set myNewName to choose from list myNames with prompt "Which name?" multiple selections allowed 0
if myNewName is false then --nothing selected, just stop
return
end if
display dialog "Use this name?" default answer myNewName buttons {"Cancel", "Ok"} default button 1 with icon 1 giving up after 5
if the button returned of the result is "Cancel" then
return
end if
repeat with myTrack in (get the selection of browser window 1)
set name of myTrack to myNewName
end repeat
end tell
Después de utilizar este script, el nombre de pista debería estar medio bien. Todavía necesito combinarlo con la cadena del campo artista. Esto lo hago un poco diferente, por eso no necesito seleccionar pistas, ya que quiero cambiar todas las pistas de la lista a la vez -- creo listas temporales fácilmente arrastrando un grupo de pistas seleccionadas en la ventana de lista de reproducción. Una vez tengo estas pistas aisladas en su propia lista de reproducción, me resta el trabajo fácil, incluso si las deselecciono. Le digo a iTunes que rote a través de todas las pistas, uniendo las cadenas nombre y artista con un ",", y entonces disponga en el nombre la cadena combinada. Una vez que la cadena de la sección artista está asegurada en el nombre de pista, configuro la cadena artista al artista real, el cual para mi significa el intérprete (iTunes tiene una columna separada para Compositor -- ver el elemento del menú "Editar -> Ver Opciones..." para ver como puedes cambiar las columnas en iTunes).
 |
| Diálogo Ver Opciones de iTunes |
tell application "iTunes"
set myPlaylist to playlist "To Do"
repeat with i from 1 to count of tracks of myPlaylist
set myTrack to track i of myPlaylist
set myArtist to artist of myTrack
set myName to name of myTrack
set myNewName to myName & ", " & myArtist
set name of myTrack to myArtist
set artist of myTrack to "Glenn Gould"
end repeat
end tell
Una vez tengo la idea básica del script para combinar los nombres de pista y artista, relleno el script con diálogos para seleccionar la lista y el nombre de artista de tal modo que no tenga que cambiar el script para cada grupo de cambios que desee hacer.
 |
| Diálogos AppleScript del script iTunes |
tell application "iTunes"
set allPlaylists to name of user playlists
set myPlaylist to choose from list allPlaylists with prompt
"Which playlist?" multiple selections allowed 0
if myPlaylist is false then --nothing selected, just stop
return
end if
display dialog "What is the new artist name?" default answer "Glenn Gould" buttons {"Cancel", "Ok"} default button 1 with icon 1 giving up after 5
if the button returned of the result is "Cancel" then
return
end if
repeat with i from 1 to count of tracks of myPlaylist
set myTrack to track i of myPlaylist
set myArtist to artist of myTrack
set myName to name of myTrack
set myNewName to myName & ", " & myArtist
set name of myTrack to myArtist
set artist of myTrack to "Glenn Gould"
end repeat
end tell
Una vez tengo los scripts como me gustan, los añado al directorio iTunes Scripts (/Users/user-name/Library/iTunes/Scripts), el cual he creado yo mismo ya que no existía. Cuando iTunes reconoce el directorio, un icono AppleScript se muestra a la izquierda del menú ayuda, y los nombres de los scripts del directorio se muestran en el menú de scripts, listo para usar.
 |
| Barra de menú con icono AppleScript |
Resumiendo
En poco tiempo, he creado dos scripts que limpian ligeramente la información de música clásica en mi Biblioteca Musical iTunes. AppleScript me da acceso fácil a prácticamente cualquier cosa que iTunes conoce, y me permite automatizar tareas repetitivas. Otro problema que necesito corregir son los casos especiales o situaciones diferentes, por eso he creado otro script para ello, primero intentando scripts muy pequeños para asegurar que la idea funciona, y entonces adaptar el pequeño script para un uso generalizado. Muy rápidamente tengo un potente conjunto de herramientas para arreglar la mayoría de problemas que encuentro en mis archivos MP3 sin tener que teclear apenas. Ahora puedo emplear tiempo escuchando mi música más que ordenándola.
Comenta
el artículo en los Foros
Vuelta
al Menú