Cuprins:

Ștergeți acele melodii iTunes nedorite de pe computer: 10 pași
Ștergeți acele melodii iTunes nedorite de pe computer: 10 pași

Video: Ștergeți acele melodii iTunes nedorite de pe computer: 10 pași

Video: Ștergeți acele melodii iTunes nedorite de pe computer: 10 pași
Video: [TUTORIAL] Cum sa iti descarci muzica pe Iphone 2024, Iulie
Anonim
Ștergeți acele melodii iTunes nedorite de pe computer
Ștergeți acele melodii iTunes nedorite de pe computer

Bună, doamnelor și domnilor, acesta este primul meu cod de instruire, așa că vă rog, atunci când comentați, lăsați-vă armele acasă (cuțitele sunt totuși acceptabile). Odată cu apariția playerelor mp3, a fost posibil ca oamenii să poarte sume fără precedent. de muzică în jur cu ei în buzunare. Nu este neobișnuit să auzi despre oameni care au colecții de 5, 10, chiar și 15 mii de cântece (și unii oameni, chiar mai mult). Dintre playere mp3, niciunul nu este mai popular decât iPod-ul Apple și software-ul care îl rulează, iTunes. Cu bibliotecile de muzică atât de mari, totuși, poate deveni oarecum obositor să scapi de melodiile care pur și simplu nu sună bine sau atrăgătoare pentru tu mai. Poate dura ani de zile pentru a parcurge pistă cu pistă prin colecția dvs. de muzică din iTunes și pentru a scăpa de melodiile care nu vă plac. Acolo intră acest instructable. În acest instructable, vă voi arăta o modalitate de a scăpa automat de melodii care sunt pur și simplu îngrozitoare, cu o asistență din partea bunului meu prieten, Perl. O bună cunoaștere de bază despre Perl este extrem de utilă atunci când încercați să repetați acest instructable, deși nu este necesar (puteți cu siguranță să luați produsul cod final și să copiați / lipiți și va funcționa foarte bine). Pentru cei interesați de Perl, recomand cu tărie cartea „Learning Perl” de la O'Reilly, este o lectură bună și una dintre cele mai bune cărți scrise despre Perl pe care am avut șansa să o citesc. IMPORTANT: În timp ce metodele prezentate aici vor funcționa dacă este făcut corect, nu pot și pur și simplu nu voi accepta nicio responsabilitate dacă faci ceva prost și ștergi prețioasele tale melodii. Vă rugăm să luați în considerare o copie de rezervă a fișierelor dvs. muzicale înainte de a încerca să scrieți sau să executați un script, cum ar fi următorul. Doar greșește din partea precauției, astfel încât să nu avem sentimente rănite dacă nu, mulțumesc. Citește avertismentul? (Da, chiar și tu, persoană care nu a citit avertismentul) Minunat! Să începem:-) Actualizare: Se pare că unii scripturi perl au lucrat din greu scriind scripturi iTunes. Pentru o varietate de scripturi legate de iTunes, consultați Scripturile Teridon.

Pasul 1: Introducere

Noțiuni de bază
Noțiuni de bază

La fel ca în toate lucrurile, există puțină pregătire care trebuie făcută înainte de a putea rula acest script. Deci, lucrurile de care va trebui să ștergeți automat melodiile din iTunes: 1) Un computer (duh) 2) iTunes (duh duh) 3) Perl (greu să rulați un script Perl fără Perl, nu ați spune?) 4) editorul preferat (eu însumi sunt un susținător al vi și vim, dar orice editor de text ar trebui să facă trucul) 5) Un iPod (nu este obligatoriu, dar plăcut să-l aveți din motive care vor fi clarificate în curând) Obținerea Perl: urmați instrucțiunile de aici ar trebui să fie suficient de simple: https://www.perl.com/download.csp Odată ce Perl a fost descărcat, instalat și gata de plecare, vom dori câteva informații de bază despre ceea ce facem. Trebuie remarcat faptul că scriptul a fost inițial dezvoltat pentru Mac OS X, deși aceleași metode ar trebui să funcționeze pe sisteme de operare care nu sunt bazate pe Unix, cum ar fi Windows. E timpul pentru partea plictisitoare, er, „educativă” din Instructable.

Pasul 2: ideea de bază a scriptului

iTunes include un sistem de evaluare de 5 stele pentru a permite utilizatorilor să evalueze melodiile. Melodiile cu rating de 5 stele sunt considerate cele mai bune melodii, în timp ce melodiile cu rating de 1 stele sunt considerate a fi unele dintre cele mai proaste melodii. În scopurile noastre, vom presupune că orice melodie care nu are o evaluare (alias 0 stele) este una pe care utilizatorul nu a avut încă șansa să o evalueze. găsiți că este destul de rău încât nu merită spațiul prețios pe hard disk pe care îl ocupă piesa. Prin urmare, scriptul Perl pe care vi-l voi prezenta în acest instructabil va analiza prin biblioteca iTunes și va șterge orice piesă căreia i s-a atribuit un rating de 1 stea. Ca bonus suplimentar, melodiile pot fi evaluate în timp ce utilizatorul este în mișcare folosind un iPod. În acest fel, puteți selecta melodiile pentru ștergere în timp ce vă deplasați, pur și simplu evaluându-le, iar acestea vor fi șterse automat atunci când sincronizați iPod-ul cu computerul mai târziu (dacă sincronizați automat iPod-ul cu computerul). Acum știm ce o facem, să vedem cum vom extrage informațiile despre melodie din iTunes pentru Perl Script.

Pasul 3: Biblioteca XML: Goto Guy de la iTunes

Biblioteca XML: ITunes 'Goto Guy
Biblioteca XML: ITunes 'Goto Guy

Pentru a șterge o melodie de pe computer pe baza evaluării sale, avem nevoie de 2 informații: evaluarea melodiei și locația melodiei. Din fericire pentru noi există un fișier la îndemână, din care putem obține toate informațiile dorite vreodată despre iTunes: fișierul XML iTunes Library Library. Fișierul XML se numește „iTunes Music Library.xml” și ar trebui să fie localizat în directorul dvs. de muzică de pe hard diskul principal.

Despre fișierul XML: Fișierul xml iTunes este un fel de bază de date menținută de iTunes și întotdeauna actualizată. Când se face o modificare în iTunes, porțiunea corespunzătoare a fișierului XML iTunes este modificată pentru a observa această modificare. Un exemplu de intrare din fișierul meu iTunes iTunes este prezentat mai jos: 1218 ID-ul pistei1218Nume Take Me MeArtistA-HaGenre80'sKindMPEG fișier audio Mărime3682382Total Time230138Date Modificat2007-09-24T02: 11: 30Z Data adăugării2008-05-28T05: 00: 24ZBit Rate DataPlay7Play 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.pl fișierul XML constă din valori înconjurate de etichete în stil HTML. În scopul scriptului, vom fi interesați de informațiile despre ID-ul piesei, numele, artistul, evaluarea și locația. Dacă vă uitați la fișierul XML, este posibil să observați de mai sus că această melodie are un „rating” de 40. iTunes atribuie fiecărei melodii un număr întreg, variind de la 0 la 100, fiecare 20 de puncte fiind o stea suplimentară pentru rating. Deci, un rating de 20 corespunde unui rating de 1 stea, un rating de 40 este un rating de 2 stele și așa mai departe, 100 fiind un rating de 5 stele. Deci, acum, că știm despre fișierul XML, să începem scripturile

Pasul 4: Prietenul tău Hash (chiar dacă nu ești în Amsterdam)

Prietenul tău Hash (chiar dacă nu ești în Amsterdam)
Prietenul tău Hash (chiar dacă nu ești în Amsterdam)

Înainte de a putea elimina fișierele, avem nevoie de o bază de date funcțională care să raporteze împreună toate informațiile despre melodie. În timp ce ar putea fi utilizate structuri de date mai sofisticate, cum ar fi o matrice de hash-uri sau hash-uri de hash-uri, acest script este suficient de simplu pentru a merita utilizarea unei liste simple de hash-uri. este indexat de șiruri sau de o masă amestecată de perechi cheie / valoare. Se poate gândi la un hash ca la un butoi mare cu lucruri (valorile) în el, iar tot ce este în butoiul metaforic are o etichetă (cheile) atașate. Puteți scoate orice articol din butoi afară pur și simplu găsind eticheta acestuia. Pentru mai multe informații despre hash-uri, următorul link poate fi util: https://www.tutorialspoint.com/perl/perl_hashes.htm Putem folosi informațiile că fiecărei melodii din fișierul XML iTunes i se atribuie un ID de pistă unic pentru a ține evidența cantecele. Din acest motiv, trackID este o cheie ideală pentru hash-uri. Prin urmare, putem configura 4 hash-uri pentru titlul melodiei, artistul, evaluarea și locația. Odată ce acestea au fost stabilite, putem scana prin fișier și ne putem completa baza de date hash folosind câteva expresii regulate simple, care vor fi afișate în continuare.

Pasul 5: O lecție (foarte) scurtă privind expresiile regulate

Pentru a prelua intrările noastre hash din fișierul XML și, de asemenea, pentru a economisi puțin timp de căutare, vom dori să apelăm la ajutorul uneia dintre caracteristicile mai puternice ale Perl: expresia regulată. Voi face o lecție foarte scurtă despre expresiile regulate, dar pentru aceia dintre voi care doresc explicații mai detaliate, există o mulțime de tutoriale bune de exprimare regulată online. Consultați https://perldoc.perl.org/perlretut.html pentru un tutorial bun de exprimare regulată. Pe scurt, expresiile regulate ne oferă un set de instrumente pentru a trece prin șiruri, înlocuirea unui șir cu alt șir sau salvarea porțiunilor de un șir pentru utilizare ulterioară. Expresiile regulate oferă 2 funcții, operatorii de potrivire (m //) și de înlocuire (s //), care vor fi folosiți pentru acest proiect. Pentru a utiliza oricare dintre aceste funcții într-un context de atribuire, vom folosi operatorul de legare Perl (= ~), care este utilizat pentru a lega un model la o variabilă șir la alegere.

$ comment = ~ / Purduecer /; # returnează true dacă șirul de comentarii $ conține expresia "Purduecer" s / [a-z] / [A-Z] /; # ia toate literele minuscule în șir și le scrii cu majuscule în $ _ șirO a doua caracteristică utilă a expresiilor regulate este cea a variabilelor de memorie. În expresiile obișnuite, puteți plasa anumite elemente între paranteze și apoi utilizați variabilele de memorie de potrivire a modelului special $ 1, $ 2 etc. pentru a accesa porțiunile șirurilor care s-au potrivit mai târziu cu aceste părți.

/ (Instructables) Robot /; #Match orice linie cu sintagma „Instructables Robot” $ website = 1 $; # Salvați rezultatul potrivirii cu succes a modelului conținut în primul set de parențe # (în acest caz, variabila $ 1 conține „Instructabile”)În cele din urmă, în expresiile regulate, există anumite personaje care au un scop special. Acestea sunt evadări de tip backslash (toate acestea ar trebui să pară familiare programatorilor C), clase de caractere și metacaractere. De exemplu, pentru a potrivi orice literă care are o filă pe ambele părți, am putea spune

/ / t [a-zA-Z] t /Aceste paranteze sunt folosite în expresii regulate pentru a defini o clasă de caractere. Să presupunem, totuși, că am vrut să găsim text între paranteze pătrate în linie. Nu am putea să-l scriem așa cum este, așa cum se arată mai jos

/

/

Pasul 6: Aplicarea expresiilor regulate la Scriptul iTunes

Aplicarea expresiilor regulate la scriptul iTunes
Aplicarea expresiilor regulate la scriptul iTunes

Acum, sperăm că avem câteva informații despre conceptele de bază care alimentează expresiile regulate, este timpul să le aplicăm scriptului iTunes. La citirea codului XML, anumite caractere, cum ar fi linia directă, sunt întâlnite destul de des. Prin urmare, vom profita de faptul că operatorul m // vă permite să alegeți orice delimitatori doriți în cod (vom folosi paranteze pătrate, deși alți delimitatori vor funcționa cu siguranță) În primul rând, trebuie doar să citim o porțiune din fișierul XML complet iTunes. Nu sunt necesare părți din fișier care conțin informații precum playlisturi etc. Prima linie a secțiunii listelor de redare, care vine după informațiile melodiei, arată după cum urmează: Liste de redare Prin urmare, într-o buclă de timp, putem adăuga într-o declarație care sare la sfârșitul citirii fișierului dacă linia respectivă este întâlnită.

while () {#loop_instructions_here last if ($ _ = ~ m [Playlisturi])}Apoi, pentru a construi ID-urile hash, putem folosi un arbore if-elsif pentru a construi hashurile bazei de date, folosind variabilele de potrivire a memoriei despre care am aflat în pasul anterior pentru a salva valori în hash-uri

if ($ _ = ~ m [(d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Rating (d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Name (. +)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artist (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Acum că am construit baza bazei noastre de date hash, vom acoperi localizarea și înlăturarea fișierelor de 1 stea, astfel încât să trecem la pasul următor!

Pasul 7: Localizarea și ștergerea acelor melodii de 1 stea

Localizarea și ștergerea acelor melodii de 1 stea
Localizarea și ștergerea acelor melodii de 1 stea

Acum că avem baza de date configurată, este timpul să căutăm piesele de 1 stea, astfel încât să le putem șterge. Perl oferă o construcție utilă de buclă numită buclă foreach, care poate fi utilizată pentru a itera pe toate tastele hashurilor noastre. Trebuie remarcat faptul că nu fiecare piesă din biblioteca dvs. iTunes va avea o intrare în hashul de evaluare. Acest lucru se datorează faptului că melodiilor care nu au o evaluare nu li se acordă o linie de evaluare a pieselor în fișierul XML iTunes. Prin urmare, atunci când faceți o buclă prin hashuri, vom dori să folosim următoarea construcție:

foreach $ id (chei de sortare% rate_hash) {# … introduceți codul de buclă aici}După aceea, este la fel de simplu ca și utilizarea următoarei afirmații

deconectați $ loc_hash {$ id} dacă $ rate_hash {$ id} == 20;Funcția de deconectare utilizată în exemplul de cod de mai sus este modalitatea Perl de a șterge fișiere. Este posibil să fiți tentați să utilizați un apel de sistem la funcția de ștergere a sistemului dvs. de operare, dar din motive de portabilitate, codul pe care l-am scris nu folosește apelul de sistem. Acum avem structura de bază pentru codul nostru. În pașii următori, vom face câteva îmbunătățiri ale codului, astfel încât să puteți avea un script funcțional complet, pentru a scăpa de acele 1-stele plictisitoare.

Pasul 8: scăpări URI și cum să le ocoliți

Dacă încercați să rulați scriptul așa cum este, veți întâlni numeroase erori din sistemul dvs. de operare și, dacă vă uitați la căile de fișiere pe care încercați să le ștergeți, puteți găsi caractere neobișnuite încorporate în căile care nu sunt de dorit. Există șanse destul de mari ca aceste căi să conțină caractere de evadare URI. Ce sunt evadările URI? În HTML și XML, caracterele de scăpare URI (cunoscute și ca scăpări URI) sunt metacaractere speciale utilizate pentru a căuta instanțe literale ale acelui caracter. De exemplu, nu veți vedea niciodată un simplu spațiu alb într-un șir de caractere XML. Cu toate acestea, veți vedea reprezentarea XML a unui spațiu simplu,% 20. (Cu siguranță le-ați văzut în bara URL a browserului și v-ați întrebat ce sunt acestea. Ei bine, acum știți) O evadare URI constă dintr-un semn% urmat de un cod hexazecimal din 2 cifre care reprezintă valoarea ASCII a personajului. punct, ați putea scrie o grămadă de instrucțiuni de înlocuire pe hash-ul de locație pentru a înlocui fiecare metacaracter posibil pe care îl întâlniți (adică $ loc_hash {$ id} = ~ s /% 20 / / și așa mai departe). Din fericire, însă, Perl oferă o modalitate mai bună de a avea grijă de aceste lucruri. Perl vine la pachet cu un modul numit URI:: Escape, care are o funcție încorporată, uri_unescape, care va face treaba de a elimina scăderile URI pentru noi.. Pentru a utiliza modulul, pur și simplu adăugați următoarea linie în partea de sus a codului:

folosiți URI:: Escape;Acum, după ce atribuim matricea $ loc_hash {$ id} în bucla fișierului XML, putem adăuga următoarea linie după aceea

uri_unescape ($ loc_hash {$ id});Linia de mai sus elimină automat orice caracter de evadare URI. Ca bonus suplimentar, traduce și câteva personaje internaționale. Am rulat scriptul cu câteva căi de fișiere care aveau konji japoneze, iar funcția uri_unescape a tradus formatele XML ale acestor caractere în caracterele lor originale, astfel încât deconectarea să poată șterge cu succes fișierul. Înainte de a trece mai departe, trebuie făcut un pas suplimentar. Din motive pe care nu le înțeleg pe deplin, iTunes codifică simbolul ampersand (&) ca și în șirurile sale. Dacă cineva știe de ce este acest lucru, vă rog să-mi spuneți. Între timp, eliminăm această problemă adăugând următoarea linie sub linia uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Acum, scriptul va avea trasee de fișiere clare de caractere ciudate, iar funcția de deconectare va putea găsi fișiere în locațiile lor corespunzătoare pentru a le șterge. Ei bine, va fi dacă utilizați Mac OSX (și probabil cel mai multe alte sisteme de operare bazate pe Unix, de asemenea). Citiți mai departe pentru a face scriptul compatibil cu alte sisteme de operare (și anume, Windows).

Pasul 9: Adăugarea compatibilității scripturilor la Windows

Adăugarea compatibilității scripturilor la Windows
Adăugarea compatibilității scripturilor la Windows

Scriptul, așa cum a fost scris până acum, elimină în mod eficient piesele de pe sistemele de operare bazate pe Unix. Pentru ca acesta să funcționeze pe Windows, este necesară o adăugare minoră. Spre deosebire de Mac și alte sisteme de operare bazate pe Unix, Windows nu acceptă conceptul unui singur director rădăcină. Prin urmare, toate căile de acces încep cu un volum (C: sau E: sau orice altă literă la care vă puteți gândi, de altfel) spre deosebire de directorul rădăcină (/). Din fericire, Perl are o variabilă specială, $O (asta este o capitală, nu un zero), care ne spune ce sistem de operare folosim în prezent. Deci, dacă valoarea stocată în acea variabilă conține „Win”, vom dori să eliminăm slash-ul principal de pe calea noastră de fișiere de locație XML. Acest lucru se poate face cu următoarea linie de cod (adăugată după ce analizăm cu succes locația unei piste din fișierul XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) dacă $ ^ O = ~ / Win / i;Acum, scriptul va funcționa indiferent dacă este rulat pe OS X sau Windows.

Pasul 10: Scriptul finalizat

Scriptul finalizat
Scriptul finalizat

Este atașată versiunea mea a scriptului iTunes de autodelecționare completat, pentru cei dintre voi care au dorit doar produsul final și nu explicația despre modul în care funcționează.

Pentru a utiliza scriptul, veți dori să salvați fișierul ca fișier perl (extensie.pl) și apoi să-l executați (chmod 751 în Unix, nu sunteți sigur ce este pentru sistemele Windows).

Recomandat: