Sommario:

Elimina quelle canzoni ITunes indesiderate dal tuo computer: 10 passaggi
Elimina quelle canzoni ITunes indesiderate dal tuo computer: 10 passaggi

Video: Elimina quelle canzoni ITunes indesiderate dal tuo computer: 10 passaggi

Video: Elimina quelle canzoni ITunes indesiderate dal tuo computer: 10 passaggi
Video: Come VELOCIZZARE IL PC in meno di 30 secondi! Trucco per Windows 10 e Windows 11! 2024, Novembre
Anonim
Elimina quelle canzoni iTunes indesiderate dal tuo computer
Elimina quelle canzoni iTunes indesiderate dal tuo computer

Ehi signore e signori, questa è la mia prima istruzione di codifica, quindi per favore, quando commentate, lasciate le vostre pistole a casa (i coltelli sono accettabili, comunque). Con l'avvento dei lettori mp3, è stato reso possibile per le persone trasportare quantità senza precedenti di musica in giro con loro in tasca. Non è raro sentire di persone che hanno raccolte di 5, 10, anche 15 mila canzoni (e alcune persone, anche di più). Dei lettori mp3, nessuno è più popolare dell'iPod di Apple e del software che lo esegue, iTunes. Con librerie musicali così grandi, tuttavia, può diventare un po' noioso sbarazzarsi delle canzoni che semplicemente non suonano bene o attraenti per tu più. Potrebbero volerci anni per andare traccia per traccia attraverso la tua raccolta musicale in iTunes e sbarazzarti delle canzoni che non ti piacciono. È qui che entra in gioco questa istruzione. In questa istruzione, ti mostrerò un modo per sbarazzarti automaticamente delle canzoni che sono semplicemente orribili, con l'aiuto del mio buon amico, Perl. Una buona conoscenza di base di Perl è estremamente utile quando si tenta di ripetere questo istruibile, anche se non richiesto (si può certamente semplicemente prendere il prodotto di codice finito e copiare / incollare e funzionerà bene). Per chi è interessato a Perl, consiglio vivamente il libro "Learning Perl" di O'Reilly, è una buona lettura e uno dei migliori libri scritti su Perl che abbia avuto la possibilità di leggere. IMPORTANTE: mentre i metodi presentati qui funzioneranno se fatto correttamente, non posso e semplicemente non accetterò alcuna responsabilità se fai qualcosa di stupido e cancelli le tue preziose canzoni. Si prega di considerare fortemente il backup dei file musicali prima di tentare di scrivere o eseguire uno script come il seguente. Peccare solo per eccesso di cautela in modo da non avere alcun sentimento ferito se non lo fai, grazie. Leggi l'avviso? (Sì, anche tu, persona che non ha letto l'avvertimento) Ottimo! Cominciamo:-)Aggiornamento: sembra che alcuni scripter perl abbiano lavorato duramente per scrivere gli script di iTunes. Per una varietà di script relativi a iTunes, controlla gli script di Teridon.

Passaggio 1: iniziare

Iniziare
Iniziare

Come per tutte le cose, c'è una piccola preparazione che deve essere fatta prima di poter eseguire questo script. Quindi, le cose di cui avrai bisogno per eliminare automaticamente le canzoni da iTunes:1) Un computer (duh)2) iTunes (doppio duh)3) Perl (difficile eseguire uno script Perl senza Perl, non diresti?)4) Il tuo editor preferito (io stesso sono un sostenitore di vi e vim, ma qualsiasi editor di testo dovrebbe fare il trucco)5) Un iPod (non obbligatorio, ma bello da avere per ragioni che saranno chiarite abbastanza presto) Ottenere Perl: seguire il le istruzioni qui, dovrebbero essere abbastanza semplici: https://www.perl.com/download.csp Una volta scaricato, installato e pronto Perl, avremo bisogno di alcune informazioni di base su ciò che stiamo facendo. Va notato che lo script è stato originariamente sviluppato per Mac OS X, sebbene gli stessi metodi dovrebbero funzionare su sistemi operativi non basati su Unix come Windows. Tempo per la parte noiosa, ehm, "educativa" di Instructable.

Passaggio 2: l'idea di base dello script

iTunes include un sistema di valutazione a 5 stelle per consentire agli utenti di valutare i brani. Le canzoni con una valutazione a 5 stelle sono considerate le migliori canzoni mentre le canzoni con una valutazione a 1 stella sono considerate alcune delle peggiori canzoni. Per i nostri scopi, assumeremo che qualsiasi canzone priva di una valutazione (ovvero 0 stelle) sia quella che l'utente non ha ancora avuto la possibilità di valutare. Personalmente, quando valuti le canzoni, se una canzone ha una valutazione di 1 stella, io scoprire che probabilmente è abbastanza grave da non meritare il prezioso spazio sul disco rigido che la canzone occupa. Pertanto, lo script Perl che ti presenterò in questo Instructable analizzerà la libreria di iTunes ed eliminerà qualsiasi traccia a cui è stata assegnata una valutazione a 1 stella. Come bonus aggiuntivo, le canzoni possono essere valutate mentre l'utente è in movimento utilizzando un iPod. In questo modo, puoi selezionare i brani da eliminare mentre sei in movimento semplicemente valutandoli e verranno eliminati automaticamente quando sincronizzerai l'iPod con il computer in un secondo momento (se sincronizzi automaticamente l'iPod con il computer). Ora che sappiamo cosa stiamo facendo, vediamo come estrarremo le informazioni sui brani da iTunes per lo script Perl.

Passaggio 3: la libreria XML: Goto Guy di ITunes

La libreria XML: Goto Guy di iTunes
La libreria XML: Goto Guy di iTunes

Per eliminare una canzone dal computer in base alla sua valutazione, abbiamo bisogno di 2 informazioni: la valutazione della canzone e la posizione della canzone. Fortunatamente per noi c'è un file utile da cui possiamo ottenere tutte le informazioni che abbiamo sempre desiderato su iTunes: il file XML della libreria musicale di iTunes. Il file XML si chiama "iTunes Music Library.xml" e dovrebbe trovarsi nella directory Music sul disco rigido principale.

Informazioni sul file XML: Il file xml di iTunes è una sorta di database gestito da iTunes e sempre aggiornato. Quando viene apportata una modifica in iTunes, la parte corrispondente del file XML di iTunes viene modificata per notare questa modifica. Di seguito viene fornita una voce di esempio dal mio file XML di iTunes: 1218ID traccia1218NomeTake On MeArtistA-HaGenre80'sKindMPEG file audioDimensione3682382Tempo totale230138Data di modifica2007-09-24T02:11:30ZData di aggiunta2008-05-28T05:00:24ZBit Rate128Sample Rate441768Play Count18Play Date32TC-97 25T01:26:58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Library Folder Count1As può essere visto dalla voce precedente il file XML è costituito da valori circondati da tag in stile HTML. Ai fini dello script, saremo interessati alle informazioni sull'ID traccia, il nome, l'artista, la valutazione e la posizione. Se stai guardando il file XML, potresti notare dall'alto che questa canzone ha una "valutazione" di 40. iTunes assegna a ogni canzone un numero intero, compreso tra 0 e 100, con ogni 20 punti che rappresentano una stella aggiuntiva per la valutazione. Quindi, una valutazione di 20 corrisponde a una valutazione di 1 stella, una valutazione di 40 è una valutazione di 2 stelle e così via, con 100 una valutazione di 5 stelle. Quindi ora che sappiamo del file XML, iniziamo a creare script

Passaggio 4: il tuo amico l'hashish (anche se non sei ad Amsterdam)

Il tuo amico l'hash (anche se non sei ad Amsterdam)
Il tuo amico l'hash (anche se non sei ad Amsterdam)

Prima di poter eliminare i file, abbiamo bisogno di un database funzionante che metta in relazione tutte le informazioni sulla canzone insieme. Sebbene possano essere utilizzate strutture dati più sofisticate, come un array di hash o hash di hash, questo script è abbastanza semplice da meritare l'uso di un semplice elenco di hash. Per chi non lo sapesse, un hash non è altro che un array che è indicizzato da stringhe o da una massa confusa di coppie chiave/valore. Si può pensare a un hash come a un grande barile con dentro cose (i valori), e tutto nel barile metaforico ha un tag (le chiavi) attaccato. Puoi estrarre qualsiasi oggetto nella canna semplicemente trovando il suo cartellino. Per ulteriori informazioni sugli hash, può essere utile il seguente collegamento: https://www.tutorialspoint.com/perl/perl_hashes.htm Possiamo utilizzare l'informazione che a ogni canzone nel file XML di iTunes è assegnato un ID traccia univoco per tenerne traccia le canzoni. Per questo motivo, il trackID è una chiave ideale per gli hash. Pertanto, possiamo impostare 4 hash per titolo del brano, artista, valutazione e posizione. Una volta che questi sono stati stabiliti, possiamo scansionare il file e riempire il nostro database di hash usando alcune semplici espressioni regolari, che verranno mostrate di seguito.

Passaggio 5: una (molto) breve lezione sulle espressioni regolari

Per prendere le nostre voci hash dal file XML, e anche risparmiare un po' di tempo nella ricerca, vorremo ricorrere all'aiuto di una delle funzionalità più potenti di Perl: l'espressione regolare. Farò una breve lezione sulle espressioni regolari, ma per quelli di voi che desiderano spiegazioni più dettagliate, ci sono molti buoni tutorial sulle espressioni regolari online. Dai un'occhiata a https://perldoc.perl.org/perlretut.html per un buon tutorial sulle espressioni regolari. In breve, le espressioni regolari ci forniscono una serie di strumenti per esaminare le stringhe, sostituire una stringa con un'altra stringa o salvare parti di una stringa per un uso successivo. Le espressioni regolari forniscono 2 funzioni, gli operatori di corrispondenza (m//) e di sostituzione (s//), che verranno utilizzati per questo progetto. Per utilizzare una di queste funzioni in un contesto di assegnazione, utilizzeremo l'operatore di associazione di Perl (=~), che viene utilizzato per associare un modello a una variabile stringa di scelta. Esempi:

$commento =~ /Inseguitore/; #returns true se la stringa $comment contiene la frase "Purduecer"s/[a-z]/[A-Z]/; #prendi tutte le lettere minuscole nella stringa e rendile maiuscole in $_ stringaUna seconda caratteristica utile delle espressioni regolari è quella delle variabili di memoria. Nelle espressioni regolari, è possibile inserire determinati elementi tra parentesi e quindi utilizzare le variabili di memoria di corrispondenza del modello speciale $1, $2, ecc. per accedere in seguito alle parti delle stringhe che corrispondono a queste parti. Esempi

/(Instructables) Robot/; #Associa qualsiasi riga con la frase "Instructables Robot"$sito web = $1; #Salva il risultato della corrispondenza del modello riuscita contenuta nel primo set di parentesi #(in questo caso, la variabile $1 contiene "Instructables")Infine, nelle espressioni regolari, ci sono alcuni caratteri che hanno uno scopo speciale. Questi sono escape backslash (tutti dovrebbero sembrare familiari ai programmatori C), classi di caratteri e metacaratteri. Ad esempio, per abbinare ogni singola lettera che ha una linguetta su entrambi i lati, potremmo dire

/\t[a-zA-Z]\t/Queste parentesi quadre vengono utilizzate nelle espressioni regolari per definire una classe di caratteri. Supponiamo, tuttavia, di voler trovare del testo racchiuso tra parentesi quadre nella riga. Non potremmo semplicemente scriverlo così com'è, come mostrato di seguito

/

/

Passaggio 6: applicazione di espressioni regolari allo script di iTunes

Applicazione di espressioni regolari allo script di iTunes
Applicazione di espressioni regolari allo script di iTunes

Ora che speriamo di avere qualche idea sui concetti di base alla base delle espressioni regolari, è il momento di applicarli allo script di iTunes. Quando si legge il codice xml, alcuni caratteri, come la barra, si incontrano abbastanza spesso. Pertanto, approfitteremo del fatto che l'operatore m// ti consente di scegliere i delimitatori che desideri nel codice (useremo le parentesi quadre, anche se altri delimitatori funzioneranno sicuramente) Prima di tutto, abbiamo solo bisogno di leggere una parte di il file XML completo di iTunes. Le parti del file che contengono informazioni come playlist, ecc. non sono necessarie. La prima riga della sezione playlist, che viene dopo le informazioni sulla canzone, ha il seguente aspetto: PlaylistPertanto, in un ciclo while, possiamo aggiungere un'istruzione che salta alla fine del file leggendo se quella riga viene incontrata.

while() { #loop_instructions_here last if($_ =~ m[Playlist])}Successivamente, per creare gli ID hash, possiamo utilizzare un albero if-elsif per creare gli hash del nostro database, utilizzando le variabili di corrispondenza della memoria che abbiamo appreso nel passaggio precedente per salvare i valori negli hash

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Voto(d+)]) { $hash_tasso{$id} = $1; } elsif($_ =~ m[Nome(.+)]) { $nome_hash{$id} = $1; } elsif($_ =~ m[Artista(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Locationfile://localhost(.*)]) { $loc_hash{$id} = $1; }Ora che abbiamo costruito le basi del nostro database hash, tratteremo l'individuazione e la rimozione dei file 1-Star, quindi vai al passaggio successivo!

Passaggio 7: individuare ed eliminare le tracce a 1 stella

Individuazione ed eliminazione di quelle tracce a 1 stella
Individuazione ed eliminazione di quelle tracce a 1 stella

Ora che abbiamo impostato il nostro database, è il momento di cercare le tracce a 1 stella, in modo da poterle eliminare. Perl fornisce un utile costrutto di loop chiamato ciclo foreach che può essere utilizzato per scorrere tutte le chiavi dei nostri hash. Va notato che non tutte le tracce nella libreria di iTunes avranno una voce nell'hash delle valutazioni. Questo perché le canzoni che non hanno una valutazione non ricevono una riga di valutazione della traccia nel file XML di iTunes. Pertanto, durante il ciclo degli hash, vorremo utilizzare il seguente costrutto:

foreach $id (ordina le chiavi %rate_hash) { #…inserisci qui il codice di loop}Dopodiché, è semplice come usare la seguente dichiarazione

scollega $loc_hash{$id} if $rate_hash{$id} == 20;La funzione di scollegamento utilizzata nel codice di esempio sopra è il modo in cui Perl elimina i file. Potresti essere tentato di usare una chiamata di sistema per la funzione di eliminazione del tuo sistema operativo, ma per motivi di portabilità il codice che ho scritto non usa la chiamata di sistema. Ora abbiamo la struttura di base per il nostro codice. Nei passaggi seguenti, apporteremo alcuni perfezionamenti al codice in modo che tu possa avere uno script completo e funzionale per sbarazzarti di quelle fastidiose 1-stelle.

Passaggio 8: fughe di URI e come aggirarle

Se tenti di eseguire lo script così com'è, incontrerai numerosi errori dal tuo sistema operativo e, se guardi i percorsi dei file che stai tentando di eliminare, potresti trovare caratteri insoliti incorporati nei percorsi che non sono desiderabili. Ci sono buone probabilità che questi percorsi contengano caratteri di escape URI. Cosa sono gli escape URI? In HTML e XML, i caratteri di escape URI (noti anche come escape URI) sono metacaratteri speciali utilizzati per cercare istanze letterali di quel carattere. Ad esempio, non vedrai mai un semplice spazio bianco in una stringa di caratteri XML. Tuttavia, vedrai la rappresentazione XML di un semplice spazio bianco, %20. (Sicuramente li hai visti nella barra degli URL del tuo browser e ti sei chiesto cosa fossero. Bene, ora lo sai) Un escape URI consiste in un segno % seguito da un codice esadecimale a 2 cifre che rappresenta il valore ASCII del carattere. punto, potresti scrivere un sacco di istruzioni di sostituzione sull'hash della posizione per sostituire ogni possibile metacarattere che incontri (ad esempio $loc_hash{$id} =~ s/%20/ /; e così via). Fortunatamente, tuttavia, Perl fornisce un modo migliore per prendersi cura di queste cose. Perl viene fornito in bundle con un modulo chiamato URI::Escape, che ha una funzione incorporata, uri_unescape, che farà il lavoro di eliminare gli escape URI per noi. Per utilizzare il modulo, aggiungi semplicemente la seguente riga nella parte superiore del codice:

usa URI::Escape;Ora, dopo aver assegnato l'array $loc_hash{$id} nel ciclo del file XML, possiamo aggiungere in seguito la seguente riga

uri_unescape($loc_hash{$id});La riga sopra elimina automaticamente qualsiasi carattere di escape URI. Come bonus aggiuntivo, traduce anche alcuni caratteri internazionali. Ho eseguito lo script con alcuni percorsi di file che contenevano konji giapponesi e la funzione uri_unescape ha tradotto i formati XML di quei caratteri nei loro caratteri originali in modo che unlink possa eliminare con successo il file. Prima di andare avanti, è necessario eseguire un ulteriore passaggio. Per ragioni che non capisco completamente, iTunes codifica il simbolo e commerciale (&) come & nelle sue stringhe. Se qualcuno sa perché questo è, per favore me lo faccia sapere. Nel frattempo, eliminiamo questo problema aggiungendo la seguente riga sotto la riga uri_unescape

$loc_hash{$id} =~ s/&#/&/;Ora lo script avrà percorsi di file privi di caratteri strani e la funzione di scollegamento sarà in grado di trovare i file nelle posizioni corrette per eliminarli. Bene, lo farà se stai usando Mac OSX (e presumibilmente anche la maggior parte degli altri sistemi operativi basati su Unix). Continua a leggere per rendere lo script compatibile su altri sistemi operativi (vale a dire, Windows).

Passaggio 9: aggiunta della compatibilità degli script a Windows

Aggiunta della compatibilità degli script a Windows
Aggiunta della compatibilità degli script a Windows

Lo script, come scritto finora, rimuove efficacemente le tracce sui sistemi operativi basati su Unix. Per farlo funzionare su Windows, è necessaria una piccola aggiunta. A differenza di Mac e altri sistemi operativi basati su Unix, Windows non supporta il concetto di una singola directory principale. Pertanto, tutti i nomi di percorso iniziano con un volume (C: o E: o qualsiasi altra lettera che ti viene in mente) invece della directory radice (/). Fortunatamente per noi, Perl ha una variabile speciale, $O (è una o maiuscola, non uno zero), che ci dice quale sistema operativo stiamo attualmente utilizzando. Quindi, se il valore memorizzato in quella variabile contiene "Win", vorremmo rimuovere la barra iniziale sul nostro percorso file XML. Questo può essere fatto con la seguente riga di codice (aggiunta dopo aver analizzato con successo la posizione di una traccia dal file XML):

$loc_hash{$id} = substr($loc_hash{$id}, 1) if $^O =~ /Win/i;Ora, lo script funzionerà sia che sia eseguito su OS X o Windows.

Passaggio 10: lo script completato

La sceneggiatura completata
La sceneggiatura completata

In allegato è la mia versione dello script di eliminazione automatica di iTunes completato, per quelli di voi che volevano solo il prodotto finale e non la spiegazione su come funziona.

Per utilizzare lo script dovrai salvare il file come file perl (estensione.pl) e quindi renderlo eseguibile (chmod 751 in Unix, non sono sicuro di cosa sia per i sistemi Windows).

Consigliato: