Tabla de contenido:

Elimine esas canciones de iTunes no deseadas de su computadora: 10 pasos
Elimine esas canciones de iTunes no deseadas de su computadora: 10 pasos

Video: Elimine esas canciones de iTunes no deseadas de su computadora: 10 pasos

Video: Elimine esas canciones de iTunes no deseadas de su computadora: 10 pasos
Video: Como borrar todas las canciones en Itunes 2024, Mes de julio
Anonim
Elimine esas canciones de iTunes no deseadas de su computadora
Elimine esas canciones de iTunes no deseadas de su computadora

Hola, damas y caballeros, este es mi primer instructivo de codificación, así que por favor, cuando comenten, dejen sus armas en casa (los cuchillos son aceptables, sin embargo). Con la llegada de los reproductores de mp3, se ha hecho posible que las personas lleven cantidades sin precedentes de música con ellos en los bolsillos. No es raro oír hablar de personas que tienen colecciones de 5, 10, incluso 15 mil canciones (y algunas personas, incluso más). De los reproductores de mp3, ninguno es más popular que el iPod de Apple y el software que lo ejecuta, iTunes. Sin embargo, con bibliotecas de música tan grandes, puede resultar algo tedioso deshacerse de las canciones que simplemente no suenan bien o no son atractivas. tu mas Puede llevar años recorrer pista a pista a través de tu colección de música en iTunes y deshacerte de las canciones que no te gustan. Ahí es donde entra en juego este instructivo. En este instructivo, te mostraré una forma de deshacerte automáticamente de las canciones que son simplemente horribles, con un poco de ayuda de mi buen amigo, Perl. Un buen conocimiento básico de Perl es extremadamente útil cuando se intenta repetir este instructivo, aunque no es obligatorio (ciertamente puede tomar el producto de código terminado y copiar / pegar y funcionará bien). Para aquellos interesados en Perl, les recomiendo el libro "Learning Perl" de O'Reilly, es una buena lectura y uno de los mejores libros escritos sobre Perl que he tenido la oportunidad de leer. IMPORTANTE: Si bien los métodos presentados aquí funcionarán si se hace correctamente, no puedo y simplemente no aceptaré ninguna responsabilidad si haces algo estúpido y borras tus preciosas canciones. Considere la posibilidad de realizar una copia de seguridad de sus archivos de música antes de intentar escribir o ejecutar un script como el siguiente. Simplemente peca por el lado de la precaución para que no tengamos ningún sentimiento herido si no lo haces, gracias. ¿Lee la advertencia? (Sí, incluso usted, la persona que no leyó la advertencia) ¡Genial! Empecemos:-) Actualización: Parece que algunos scripters de Perl han estado trabajando duro escribiendo scripts de iTunes. Para obtener una variedad de scripts relacionados con iTunes, consulte Scripts de Teridon.

Paso 1: Comenzando

Empezando
Empezando

Como ocurre con todas las cosas, es necesario realizar una pequeña preparación antes de que podamos ejecutar este script. Entonces, las cosas que necesitará para eliminar automáticamente las canciones de iTunes: 1) Una computadora (duh) 2) iTunes (doble duh) 3) Perl (es difícil ejecutar un script de Perl sin Perl, ¿no cree?) 4) Su editor favorito (soy un defensor de vi y vim, pero cualquier editor de texto debería hacer el truco) 5) Un iPod (no es obligatorio, pero es bueno tenerlo por razones que se aclararán lo suficientemente pronto) Obtener Perl: siga las Las instrucciones aquí deben ser lo suficientemente simples: https://www.perl.com/download.csp Una vez que haya descargado Perl, instalado y listo para usar, desearemos información general sobre lo que estamos haciendo. Cabe señalar que el script se desarrolló originalmente para Mac OS X, aunque los mismos métodos deberían funcionar en sistemas operativos no basados en Unix, como Windows. Es hora de la parte aburrida, er, "educativa" del Instructable.

Paso 2: La idea básica del guión

iTunes incluye un sistema de calificación de 5 estrellas que permite a los usuarios calificar las canciones. Las canciones con una calificación de 5 estrellas se consideran las mejores canciones, mientras que se supone que las canciones con una calificación de 1 estrella son algunas de las peores canciones. Para nuestros propósitos, asumiremos que cualquier canción que carece de una calificación (también conocida como 0 estrellas) es una que el usuario aún no ha tenido la oportunidad de calificar. Personalmente, al calificar canciones, si una canción tiene una calificación de 1 estrella, yo encontrar que probablemente sea lo suficientemente malo como para no merecer el precioso espacio en el disco duro que ocupa la canción. Por lo tanto, el script de Perl que les presentaré en este Instructable analizará la biblioteca de iTunes y eliminará cualquier pista a la que se le haya asignado una calificación de 1 estrella. Como una ventaja adicional, las canciones se pueden calificar mientras el usuario está en movimiento. utilizando un iPod. De esta manera, puede seleccionar canciones para eliminarlas mientras viaja simplemente calificándolas, y se eliminarán automáticamente cuando sincronice su iPod con su computadora más adelante (si sincroniza automáticamente su iPod con su computadora). que estamos haciendo, veamos cómo vamos a extraer información de la canción de iTunes para Perl Script.

Paso 3: La biblioteca XML: Goto Guy de iTunes

La biblioteca XML: Goto Guy de iTunes
La biblioteca XML: Goto Guy de iTunes

Para eliminar una canción de la computadora según su calificación, necesitamos 2 piezas de información: la calificación de la canción y la ubicación de la canción. Afortunadamente para nosotros, existe un archivo útil del que podemos obtener toda la información que siempre quisimos sobre iTunes: el archivo XML de la biblioteca musical de iTunes. El archivo XML se llama "iTunes Music Library.xml" y debe estar ubicado en su directorio de música en su disco duro principal.

Acerca del archivo XML: El archivo XML de iTunes es una especie de base de datos mantenida por iTunes y siempre actualizada. Cuando se realiza una modificación en iTunes, la parte correspondiente del archivo XML de iTunes se modifica para tener en cuenta este cambio. A continuación se muestra una entrada de muestra de mi archivo XML de iTunes: 1218 Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02: 11: 30ZDate Added2008-05-28T05: 00: 24ZBit Rate128Sample Rate8Play 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20On%20Folleto de entrada de la carpeta Count.mp1 el archivo XML consta de valores rodeados por etiquetas de estilo HTML. Para los propósitos del guión, estaremos interesados en los bits de información de ID de pista, Nombre, Artista, Calificación y Ubicación. Si está mirando el archivo XML, puede observar desde arriba que esta canción tiene una "calificación" de 40. iTunes asigna a cada canción un número entero, que va de 0 a 100, siendo cada 20 puntos una estrella adicional para la calificación. Entonces, una calificación de 20 corresponde a una calificación de 1 estrella, una calificación de 40 es una calificación de 2 estrellas, y así sucesivamente, siendo 100 una calificación de 5 estrellas. Ahora que conocemos el archivo XML, comencemos a programar

Paso 4: tu amigo el hash (incluso si no estás en Amsterdam)

Your Friend the Hash (incluso si no estás en Amsterdam)
Your Friend the Hash (incluso si no estás en Amsterdam)

Antes de que podamos eliminar archivos, necesitamos una base de datos en funcionamiento que relacione toda la información de la canción. Si bien se podrían usar estructuras de datos más sofisticadas, como una matriz de hashes o hash de hashes, este script es lo suficientemente simple como para merecer el uso de una lista simple de hashes. Para los no iniciados, un hash no es más que una matriz que está indexado por cadenas, o una masa mezclada de pares clave / valor. Uno puede pensar en un hash como un barril grande con cosas (los valores) en él, y todo en el barril metafórico tiene una etiqueta (las llaves) adjunta. Puede sacar cualquier artículo del barril simplemente encontrando su etiqueta. Para obtener más información sobre hashes, el siguiente enlace puede ser útil: https://www.tutorialspoint.com/perl/perl_hashes.htm Podemos usar la información de que a cada canción en el archivo XML de iTunes se le asigna una ID de pista única para realizar un seguimiento de las canciones. Debido a esto, trackID es una clave ideal para los hash. Por lo tanto, podemos configurar 4 hashes para el título de la canción, el artista, la calificación y la ubicación. Una vez que se han establecido, podemos escanear el archivo y llenar nuestra base de datos hash utilizando algunas expresiones regulares simples, que se mostrarán a continuación.

Paso 5: Una (muy) breve lección sobre expresiones regulares

Para tomar nuestras entradas hash del archivo XML, y también ahorrar un poco de tiempo en la búsqueda, vamos a querer recurrir a la ayuda de una de las características más poderosas de Perl: la expresión regular. Haré una lección muy breve sobre expresiones regulares, pero para aquellos de ustedes que quieran explicaciones más detalladas, hay muchos buenos tutoriales de expresiones regulares en línea. Consulte https://perldoc.perl.org/perlretut.html para ver un buen tutorial de expresiones regulares. En resumen, las expresiones regulares nos brindan un conjunto de herramientas para revisar cadenas, reemplazar una cadena con otra cadena o guardar partes de una cuerda para su uso posterior. Las expresiones regulares proporcionan 2 funciones, los operadores de coincidencia (m //) y de reemplazo (s //), que se utilizarán para este proyecto. Para usar cualquiera de estas funciones en un contexto de asignación, usaremos el operador de vinculación de Perl (= ~), que se usa para vincular un patrón a una variable de cadena de elección.

$ comentario = ~ / Purduecer /; # devuelve verdadero si $ comment string contiene la frase "Purduecer" s / [a-z] / [A-Z] /; # tomar todas las letras minúsculas en una cadena y ponerlas en mayúscula en $ _ cadenaUna segunda característica útil de las expresiones regulares es la de las variables de memoria. En las expresiones regulares, puede colocar ciertos elementos entre paréntesis y luego usar las variables de memoria de coincidencia de patrones especiales $ 1, $ 2, etc. para acceder a las partes de las cadenas que coincidieron con estas partes más adelante.

/ (Instructables) Robot /; # Coincidir con cualquier línea con la frase "Instructables Robot" $ sitio web = $ 1; #Guardar el resultado de la coincidencia de patrones exitosa contenido en el primer conjunto de parens # (en este caso, la variable $ 1 contiene "Instructables")Finalmente, en las expresiones regulares, hay ciertos caracteres que tienen un propósito especial. Estos son escapes de barra invertida (todos los cuales deberían resultar familiares a los programadores de C), clases de caracteres y metacaracteres. Por ejemplo, para hacer coincidir cualquier letra que tenga una pestaña a cada lado, podríamos decir

/ / t [a-zA-Z] t /Estos corchetes se utilizan en expresiones regulares para definir una clase de carácter. Supongamos, sin embargo, que quisiéramos encontrar texto entre corchetes en la línea. No podríamos simplemente escribirlo como está, como se muestra a continuación.

/

/

Paso 6: aplicar expresiones regulares al script de iTunes

Aplicar expresiones regulares al script de iTunes
Aplicar expresiones regulares al script de iTunes

Ahora que, con suerte, tenemos una idea de los conceptos básicos subyacentes que impulsan las expresiones regulares, es hora de aplicarlos al script de iTunes. Al leer el código xml, ciertos caracteres, como la barra diagonal, se encuentran con bastante frecuencia. Por lo tanto, aprovecharemos el hecho de que el operador m // le permite elegir los delimitadores que desee en el código (usaremos corchetes, aunque otros delimitadores ciertamente funcionarán) Primero que nada, solo necesitamos leer una parte de el archivo XML de iTunes completo. Las partes del archivo que contienen información como listas de reproducción, etc. no son necesarias. La primera línea de la sección de listas de reproducción, que viene después de la información de la canción, se ve así: Listas de reproducción Por lo tanto, en un ciclo while, podemos agregar una declaración que salta al final de la lectura del archivo si se encuentra esa línea.

while () {#loop_instructions_here último if ($ _ = ~ m [Playlists])}A continuación, para crear los ID de hash, podemos usar un árbol if-elsif para crear los hashes de nuestra base de datos, utilizando las variables de coincidencia de memoria que aprendimos en el paso anterior para guardar valores en los hashes.

si ($ _ = ~ m [(d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Clasificación (d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Nombre (. +)]) {$ nombre_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artista (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Ahora que hemos construido la base de nuestra base de datos hash, cubriremos la ubicación y eliminación de archivos de 1 estrella, ¡así que adelante con el siguiente paso!

Paso 7: ubicar y eliminar esas pistas de 1 estrella

Localizar y eliminar esas pistas de 1 estrella
Localizar y eliminar esas pistas de 1 estrella

Ahora que tenemos configurada nuestra base de datos, es hora de buscar las pistas de 1 estrella para poder eliminarlas. Perl proporciona una construcción de bucle útil llamada bucle foreach que se puede usar para iterar sobre todas las claves de nuestros hash. Cabe señalar que no todas las pistas de su biblioteca de iTunes tendrán una entrada en el hash de calificaciones. Esto se debe a que las canciones que no tienen una clasificación no tienen una línea de clasificación de pista en el archivo XML de iTunes. Por lo tanto, al recorrer los hashes, querremos usar la siguiente construcción:

foreach $ id (ordenar claves% rate_hash) {# … inserte el código de bucle aquí}Después de eso, es tan simple como usar la siguiente declaración

desvincular $ loc_hash {$ id} si $ rate_hash {$ id} == 20;La función de desvinculación utilizada en el código de muestra anterior es la forma en que Perl borra archivos. Puede tener la tentación de usar una llamada al sistema a la función de eliminación de su sistema operativo, pero por razones de portabilidad, el código que he escrito no usa la llamada al sistema. Ahora tenemos la estructura básica para nuestro código. En los siguientes pasos, haremos algunas mejoras en el código para que pueda tener un script funcional y con todas las funciones para deshacerse de esas molestas 1 estrella.

Paso 8: URI escapes y cómo sortearlos

Si intenta ejecutar el script tal como está, se encontrará con numerosos errores de su sistema operativo, y si observa las rutas de archivo que está intentando eliminar, puede encontrar caracteres inusuales incrustados en las rutas que no son deseables. Existe una gran posibilidad de que estas rutas contengan caracteres de escape de URI. ¿Qué son los escapes de URI? En HTML y XML, los caracteres de escape de URI (también conocidos como escapes de URI) son metacaracteres especiales que se utilizan para buscar instancias literales de ese carácter. Por ejemplo, nunca verá un simple espacio en blanco en una cadena de caracteres XML. Sin embargo, verá la representación XML de un espacio en blanco simple,% 20. (Seguramente los has visto en la barra de URL de tu navegador y te has preguntado qué eran. Bueno, ahora lo sabes) Un escape de URI consiste en un signo% seguido de un código hexadecimal de 2 dígitos que representa el valor ASCII del carácter. punto, podría escribir un montón de declaraciones de reemplazo en el hash de ubicación para reemplazar todos los metacaracteres posibles que encuentre (es decir, $ loc_hash {$ id} = ~ s /% 20 / /; y así sucesivamente). Afortunadamente, sin embargo, Perl proporciona una mejor manera de encargarse de estas cosas. Perl viene con un módulo llamado URI:: Escape, que tiene una función incorporada, uri_unescape, que hará el trabajo de eliminar los escapes de URI por nosotros.. Para usar el módulo, simplemente agregue la siguiente línea en la parte superior de su código:

use URI:: Escape;Ahora, después de asignar la matriz $ loc_hash {$ id} en el bucle del archivo XML, podemos agregar la siguiente línea después

uri_unescape ($ loc_hash {$ id});La línea anterior elimina automáticamente los caracteres de escape de URI. Como beneficio adicional, también traduce algunos caracteres internacionales. Ejecuté el script con algunas rutas de archivo que tenían konji japonés en ellas, y la función uri_unescape tradujo los formatos XML de esos caracteres a sus caracteres originales para que la desvinculación pudiera eliminar correctamente el archivo. Antes de continuar, se debe dar un paso adicional.. Por razones que no entiendo completamente, iTunes codifica el símbolo comercial (&) como & en sus cadenas. Si alguien sabe por qué es así, hágamelo saber. Mientras tanto, eliminamos este problema agregando la siguiente línea debajo de la línea uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Ahora el script tendrá rutas de archivo libres de caracteres extraños y la función de desvinculación podrá encontrar archivos en sus ubicaciones adecuadas para eliminarlos. Bueno, lo hará si está utilizando Mac OSX (y presumiblemente también la mayoría de los demás sistemas operativos basados en Unix). Siga leyendo para hacer que el script sea compatible con otros sistemas operativos (es decir, Windows).

Paso 9: agregar compatibilidad de secuencias de comandos a Windows

Adición de compatibilidad de secuencias de comandos a Windows
Adición de compatibilidad de secuencias de comandos a Windows

El script, tal como está escrito hasta ahora, elimina efectivamente las pistas en los sistemas operativos basados en Unix. Para que funcione en Windows, se necesita una pequeña adición. A diferencia de Mac y otros sistemas operativos basados en Unix, Windows no es compatible con el concepto de un directorio raíz único. Por lo tanto, todos los nombres de ruta comienzan con un volumen (C: o E: o cualquier otra letra que se te ocurra, para el caso) en lugar del directorio raíz (/). Afortunadamente para nosotros, Perl tiene una variable especial, $O (eso es una o mayúscula, no un cero), eso nos dice qué sistema operativo estamos usando actualmente. Entonces, si el valor almacenado en esa variable contiene "Win", vamos a querer eliminar la barra inclinada en nuestra ruta de archivo de ubicación XML. Esto se puede hacer con la siguiente línea de código (agregada después de analizar con éxito la ubicación de una pista del archivo XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) si $ ^ O = ~ / Win / i;Ahora, el script funcionará tanto si se ejecuta en OS X como en Windows.

Paso 10: el guión completo

El guión completo
El guión completo

Se adjunta mi versión del script de eliminación automática de iTunes completo, para aquellos de ustedes que solo querían el producto final y no la explicación de cómo funciona.

Para usar el script, querrá guardar el archivo como un archivo perl (extensión.pl) y luego hacerlo ejecutable (chmod 751 en Unix, no estoy seguro de qué es para los sistemas Windows).

Recomendado: