Taula de continguts:

Suprimiu les cançons no desitjades d'iTunes de l'ordinador: 10 passos
Suprimiu les cançons no desitjades d'iTunes de l'ordinador: 10 passos

Vídeo: Suprimiu les cançons no desitjades d'iTunes de l'ordinador: 10 passos

Vídeo: Suprimiu les cançons no desitjades d'iTunes de l'ordinador: 10 passos
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Juliol
Anonim
Suprimiu aquelles cançons iTunes no desitjades de l'ordinador
Suprimiu aquelles cançons iTunes no desitjades de l'ordinador

Hola, senyores i senyors, aquesta és la meva primera codificació que es pot instruir, així que si us plau, quan comenteu, deixeu les armes a casa (els ganivets són acceptables, però). Amb l'arribada dels reproductors mp3, s'ha permès que la gent porti quantitats sense precedents. de música al voltant amb les seves butxaques. No és estrany escoltar de persones que tenen col·leccions de 5, 10, fins i tot 15 mil cançons (i algunes persones, encara més). Dels reproductors de mp3, cap és més popular que l’iPod d’Apple i el programari que l’executa, iTunes. Tot i això, amb biblioteques de música tan grans, pot resultar una mica tediós desfer-se de les cançons que simplement no sonen bé ni són atractives tu ja. Pot trigar anys a passar rere rastre a través de la vostra col·lecció de música a iTunes i desfer-vos de les cançons que no us agraden. Aquí és on entra aquest instructiu. En aquest instructiu, us mostraré una manera de desfer-vos de les cançons automàticament. Un bon coneixement bàsic de Perl és extremadament útil quan intenteu repetir aquesta instrucció, tot i que no és necessari (segur que només podeu agafar el producte de codi acabat i copiar / enganxar i funcionarà bé). Per als interessats en Perl, recomano el llibre "Learning Perl" d'O'Reilly, és una bona lectura i un dels millors llibres escrits sobre Perl que he tingut l'oportunitat de llegir. IMPORTANT: Tot i que els mètodes que es presenten aquí funcionaran si es fa correctament, no puc ni simplement acceptaré cap responsabilitat si feu alguna cosa estúpid i suprimiu les vostres precioses cançons. Tingueu en compte la possibilitat de fer una còpia de seguretat dels fitxers de música abans d'intentar escriure o executar un script com el següent. Només cal equivocar-se amb la precaució perquè no tinguem cap sentiment ferit si no, gràcies. Llegeix l’advertència? (Sí, fins i tot tu, persona que no ha llegit l'advertiment) Genial! Comencem:-) Actualització: sembla que alguns creadors de perl han estat treballant dur escrivint scripts d'iTunes. Per obtenir una varietat de scripts relacionats amb iTunes, consulteu els scripts de Teridon.

Pas 1: Introducció

Començant
Començant

Com passa amb totes les coses, hi ha una mica de preparació que cal fer abans de poder executar aquest script. Per tant, les coses que necessitareu per esborrar cançons automàticament d’iTunes: 1) Un ordinador (duh) 2) iTunes (doble duh) 3) Perl (difícil executar un script Perl sense Perl, no diríeu?) 4) El vostre editor favorit (sóc partidari de vi i vim, però qualsevol editor de text hauria de fer el truc) 5) Un iPod (no obligatori, però és bo tenir-lo per motius que es faran prou clars) Obtenir Perl: seguiu el Les instruccions aquí haurien de ser prou senzilles: https://www.perl.com/download.csp Un cop hàgiu descarregat, instal·lat i llest Perl, voldrem informació general sobre què fem. Cal tenir en compte que l’escriptura es va desenvolupar originalment per a Mac OS X, tot i que els mateixos mètodes haurien de funcionar en sistemes operatius no basats en Unix com Windows. Temps per a la part avorrida, heu, "educativa" de l'Instruible.

Pas 2: la idea bàsica d’escriptura

iTunes inclou un sistema de classificació de 5 estrelles per permetre als usuaris valorar les cançons. Les cançons amb una puntuació de 5 estrelles es consideren les millors cançons, mentre que les cançons amb una puntuació d’1 estrella se suposa que són algunes de les pitjors. Als nostres propòsits, assumirem que qualsevol cançó que no tingui una classificació (també coneguda com a 0 estrelles) és una que l’usuari encara no ha tingut la possibilitat de valorar. trobeu que probablement és prou dolent que no mereix el preuat espai del disc dur que ocupa la cançó. Per tant, l’escriptura de Perl que us presentaré en aquest instructiu analitzarà la biblioteca d’iTunes i suprimirà qualsevol pista a la qual se li hagi assignat una puntuació d’1 estrella. Com a avantatge addicional, es poden classificar les cançons mentre l’usuari està en moviment mitjançant un iPod. D'aquesta manera, podeu seleccionar les cançons que vulgueu suprimir mentre sigueu on sigueu simplement classificant-les i se suprimiran automàticament quan sincronitzeu l'iPod amb l'ordinador més tard (si sincronitzeu automàticament l'iPod amb l'ordinador). Ara sabem què ho estem fent, vegem com traurem informació de cançons d’iTunes per a l’escriptura Perl.

Pas 3: la biblioteca XML: Goto Guy d'ITunes

La biblioteca XML: Goto Guy d'iTunes
La biblioteca XML: Goto Guy d'iTunes

Per esborrar una cançó de l’ordinador en funció de la seva classificació, necessitem 2 dades: la valoració de la cançó i la ubicació de la cançó. Afortunadament per a nosaltres hi ha un fitxer pràctic que permet obtenir tota la informació que sempre hem volgut sobre iTunes: el fitxer XML de la biblioteca musical iTunes. El fitxer XML s'anomena "iTunes Music Library.xml" i s'hauria de trobar al directori de música del disc dur principal.

Quant al fitxer XML: el fitxer XML d'iTunes és una mena de base de dades mantinguda per iTunes i sempre actualitzada. Quan es fa una modificació a iTunes, es modifica la part corresponent del fitxer XML d'iTunes per notar aquest canvi. A continuació es mostra una entrada de mostra del meu fitxer XML d’iTunes: 1218 ID de pista 1218 NomTake On MeArtistA-HaGenre80’sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02: 11: 30ZDate Added2008-05-28T05: 00: 24ZBit Rate DataPlay178 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3Libre el fitxer XML consta de valors envoltats d'etiquetes d'estil HTML. Als efectes del guió, ens interessarà l’identificació de la pista, el nom, l’artista, la classificació i la informació sobre la ubicació. Si mireu el fitxer XML, és possible que noteu des de dalt que aquesta cançó té una "valoració" de 40. iTunes assigna a cada cançó un nombre enter, que oscil·la entre 0 i 100, i cada 20 punts són una estrella addicional per a la valoració. Per tant, una valoració de 20 correspon a una de 1 estrella, una de 40 és de 2 estrelles, i així successivament, sent 100 de 5 estrelles. Ara que ja coneixem el fitxer XML, comencem a crear scripts

Pas 4: El vostre amic el Hash (fins i tot si no sou a Amsterdam)

Your Friend the Hash (fins i tot si no sou a Amsterdam)
Your Friend the Hash (fins i tot si no sou a Amsterdam)

Abans de poder eliminar fitxers, necessitem una base de dades que funcioni que relacioni tota la informació de la cançó junts. Tot i que es podrien utilitzar estructures de dades més sofisticades, com ara una matriu de hash o hash de hash, aquest script és prou senzill per merèixer l’ús d’una simple llista de hashs. s'indexa mitjançant cadenes o una massa confusa de parells clau / valor. Es pot pensar en un hash com un barril gran amb coses (els valors), i tot el que hi ha al barril metafòric té una etiqueta (les claus) adjuntes. Podeu treure qualsevol element del barril simplement trobant la seva etiqueta. Per obtenir més informació sobre els hashs, pot ser útil el següent enllaç: https://www.tutorialspoint.com/perl/perl_hashes.htm Podem utilitzar la informació de que a cada cançó del fitxer XML d’iTunes se li assigna un identificador de pista únic per fer un seguiment de les cançons. Per això, el trackID és una clau ideal per als hash. Per tant, podem configurar 4 hashes per al títol de la cançó, l’artista, la puntuació i la ubicació. Un cop establerts, podem escanejar el fitxer i omplir la nostra base de dades de resum utilitzant algunes expressions regulars simples, que es mostraran a continuació.

Pas 5: Una (molt) breu lliçó sobre expressions regulars

Per tal d’agafar les nostres entrades de hash del fitxer XML i també d’estalviar una mica de temps a la cerca, voldrem demanar ajuda a una de les funcions més poderoses de Perl: l’expressió regular. Faré una lliçó molt breu sobre expressions regulars, però per a aquells que vulgueu explicacions més detallades, hi ha molts bons tutorials d’expressió regular en línia. Consulteu https://perldoc.perl.org/perlretut.html per obtenir un bon tutorial d’expressions regulars. En resum, les expressions regulars ens proporcionen un conjunt d’eines per passar per cadenes, substituir una cadena per una altra o guardar porcions de una cadena per al seu ús posterior. Les expressions regulars proporcionen 2 funcions, els operadors de coincidència (m //) i de reemplaçament (s //), que s’utilitzaran per a aquest projecte. Per utilitzar qualsevol d'aquestes funcions en un context d'assignació, utilitzarem l'operador d'enllaç de Perl (= ~), que s'utilitza per lligar un patró a una variable de cadena que trieu.

$ comentari = ~ / Purduecer /; #returns true si la cadena $ comment conté la frase "Purduecer" s / [a-z] / [A-Z] /; # agafeu totes les minúscules en cadena i escriviu-les en majúscules en $ _ cadenaUna segona característica útil de les expressions regulars és la de les variables de memòria. En expressions regulars, podeu col·locar determinats elements entre parèntesis i, a continuació, utilitzar les variables de memòria de concordança de patrons especials $ 1, $ 2, etc. per accedir a les porcions de les cadenes que coincideixin amb aquestes parts més endavant.

/ (Instructables) Robot /; #Compareix qualsevol línia amb la frase "Robot instructiu" $ lloc web = $ 1; # Desa el resultat de la coincidència del patró amb èxit inclosa en el primer conjunt de parens # (en aquest cas, la variable $ 1 conté "Instructables")Finalment, en les expressions regulars, hi ha certs personatges que tenen un propòsit especial. Es tracta d’escapes de barra invertida (que haurien de semblar familiars als programadors de C), classes de caràcters i metacaracters. Per exemple, per fer coincidir qualsevol lletra que tingui una pestanya a banda i banda, podríem dir

/ / t [a-zA-Z] t /Aquests claudàtors s’utilitzen en expressions regulars per definir una classe de caràcters. Suposem, però, que volíem trobar text entre claudàtors a la línia. No podríem simplement escriure-ho tal qual, tal com es mostra a continuació

/

/

Pas 6: Aplicació d'expressions regulars a l'script d'iTunes

Aplicació d’expressions regulars a l’escriptura d’iTunes
Aplicació d’expressions regulars a l’escriptura d’iTunes

Ara que esperem que tinguem una mica d’informació sobre els conceptes bàsics bàsics que alimenten expressions regulars, és hora d’aplicar-los al script d’iTunes. Quan es llegeix el codi XML, es troben certs caràcters, com ara la barra inclinada, amb força freqüència. Per tant, aprofitarem el fet que l’operador m // us permetrà triar els delimitadors que vulgueu al codi (utilitzarem claudàtors, tot i que altres delimitadors funcionaran). Primer de tot, només necessitem llegir una part de el fitxer XML complet d'iTunes. No són necessàries parts del fitxer que continguin informació, com ara llistes de reproducció, etc. La primera línia de la secció de llistes de reproducció, que apareix després de la informació de la cançó, té el següent aspecte: Llistes de reproducció Per tant, en un bucle while, podem afegir en una sentència que salti al final de la lectura del fitxer si es troba aquesta línia.

while () {#loop_instructions_here last if ($ _ = ~ m [Llistes de reproducció])}A continuació, per construir els ID de hash, podem utilitzar un arbre if-elsif per crear els nostres hashes de base de dades, utilitzant les variables de concordança de memòria que hem après al pas anterior per desar valors als hash.

if ($ _ = ~ m [(d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Rating (d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Name (. +)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artista (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Ara que hem construït la base de la nostra base de dades de hash, tractarem de localitzar i eliminar fitxers d’1 estrella, de manera que aneu al següent pas.

Pas 7: localitzar i suprimir aquestes pistes d'una estrella

Localització i eliminació d’aquelles pistes d’1 estrella
Localització i eliminació d’aquelles pistes d’1 estrella

Ara que tenim la nostra base de dades configurada, és hora de buscar les pistes d'una estrella per poder-les eliminar. Perl proporciona una útil construcció de bucle anomenada bucle foreach que es pot utilitzar per iterar totes les claus dels nostres hashes. Cal tenir en compte que no totes les pistes de la vostra biblioteca d'iTunes tindran una entrada al hash de classificació. Això es deu al fet que les cançons que no tenen cap valoració no reben cap línia de classificació de pistes al fitxer XML d'iTunes. Per tant, quan fem un bucle entre els hashs, voldrem utilitzar la següent construcció:

foreach $ id (claus d'ordenació% rate_hash) {# … insereix el codi de bucle aquí}Després d’això, és tan senzill com utilitzar l’afirmació següent

desenllaçar $ loc_hash {$ id} si $ rate_hash {$ id} == 20;La funció de desenllaç que s’utilitza al codi de mostra anterior és la forma de suprimir fitxers de Perl. És possible que tingueu la temptació d’utilitzar una trucada del sistema a la funció d’eliminació del vostre sistema operatiu, però per motius de portabilitat el codi que he escrit no utilitza la trucada del sistema. Ara tenim l’estructura bàsica per al nostre codi. En els passos següents, farem alguns perfeccionaments al codi perquè pugueu tenir un guió funcional i ple de funcions per desfer-vos d’aquestes molestes estrelles 1.

Pas 8: fugides de l'URI i com es pot moure

Si intenteu executar l'script tal qual, trobareu nombrosos errors del vostre sistema operatiu i, si mireu els camins de fitxers que intenteu suprimir, és possible que trobeu caràcters inusuals incrustats a les rutes que no siguin desitjables. Hi ha moltes possibilitats que aquests camins continguin caràcters d’escapament d’URI. Què són els escapes d’URI? En HTML i XML, els caràcters d'escapament de l'URI (també coneguts com escapes d'URI) són metacaracters especials que s'utilitzen per buscar instàncies literals d'aquest caràcter. Per exemple, mai no veureu un simple espai en blanc en una cadena de caràcters XML. Tanmateix, veureu la representació XML d'un espai en blanc simple,% 20. (Segur que els heu vist a la barra d'URL del vostre navegador i us heu preguntat què eren. Bé, ara ja ho sabeu) Un escape URI consisteix en un signe% seguit d'un codi hexadecimal de 2 dígits que representa el valor ASCII del personatge. punt, podeu escriure un munt d'instruccions de reemplaçament al hash d'ubicació per substituir tots els possibles metacaracters que trobeu (és a dir, $ loc_hash {$ id} = ~ s /% 20 / /; etc.). Afortunadament, però, Perl ofereix una millor manera de tenir cura d’aquestes coses. Perl inclou un mòdul anomenat URI:: Escape, que té una funció incorporada, uri_unescape, que farà la feina d’eliminar les fugides de l’URI.. Per utilitzar el mòdul, només cal afegir la línia següent a la part superior del codi:

utilitzeu URI:: Escape;Ara, després d'assignar la matriu $ loc_hash {$ id} al bucle del fitxer XML, podem afegir la línia següent després

uri_unescape ($ loc_hash {$ id});La línia anterior elimina automàticament els caràcters d'escapament de l'URI. Com a avantatge addicional, també tradueix alguns personatges internacionals. Vaig executar l'script amb uns quants camins de fitxers que tenien konji japonès, i la funció uri_unescape va traduir els formats XML d'aquests caràcters als seus caràcters originals de manera que el desenllaçament podria eliminar el fitxer amb èxit. Abans de continuar, cal fer un pas addicional.. Per raons que no entenc del tot, iTunes codifica el símbol signe (&) com & a les seves cadenes. Si algú sap per què és així, feu-m'ho saber. Mentrestant, eliminem aquest problema afegint la següent línia a la línia uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Ara, l'script tindrà rutes de fitxers lliures de caràcters estranys i la funció de desenllaç podrà trobar fitxers a la seva ubicació adequada per eliminar-los. Bé, ho farà si utilitzeu Mac OSX (i probablement també la majoria dels altres sistemes operatius basats en Unix). Seguiu llegint per fer compatible l'script en altres sistemes operatius (és a dir, Windows).

Pas 9: afegir compatibilitat de scripts a Windows

Addició de compatibilitat d’escriptures a Windows
Addició de compatibilitat d’escriptures a Windows

L'escriptura, tal com s'ha escrit fins ara, elimina efectivament les pistes dels sistemes operatius basats en Unix. Per fer que funcioni al Windows, cal una addició menor. A diferència del Mac i d'altres sistemes operatius basats en Unix, Windows no admet el concepte d'un directori arrel únic. Per tant, tots els noms de ruta comencen amb un volum (C: o E: o qualsevol altra lletra que pugueu pensar, en aquest cas) en lloc del directori arrel (/). Per sort, Perl té una variable especial, $O (això és una o majúscula, no un zero), que ens indica quin sistema operatiu estem utilitzant actualment. Per tant, si el valor emmagatzemat en aquesta variable conté "Win", voldrem eliminar la barra inclinada del nostre camí de fitxers d'ubicació XML. Això es pot fer amb la següent línia de codi (afegida després d'analitzar correctament la ubicació d'una pista des del fitxer XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) si $ ^ O = ~ / Win / i;Ara, l'script funcionarà tant si s'executa a OS X com a Windows.

Pas 10: l'script completat

L'escriptura completada
L'escriptura completada

S’adjunta la meva versió de l’escriptura d’autodelecció automàtica d’iTunes, per a aquells de vosaltres que només volíeu el producte final i no l’explicació de com funciona.

Per utilitzar l'script, voldreu desar el fitxer com a fitxer perl (extensió.pl) i després fer-lo executable (chmod 751 a Unix, no estic segur de què és per als sistemes Windows).

Recomanat: