Sadržaj:

Izbrišite te neželjene pjesme s ITunes -a sa svog računala: 10 koraka
Izbrišite te neželjene pjesme s ITunes -a sa svog računala: 10 koraka

Video: Izbrišite te neželjene pjesme s ITunes -a sa svog računala: 10 koraka

Video: Izbrišite te neželjene pjesme s ITunes -a sa svog računala: 10 koraka
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Studeni
Anonim
Izbrišite te neželjene pjesme s ITunes -a sa svog računala
Izbrišite te neželjene pjesme s ITunes -a sa svog računala

Hej, dame i gospodo, ovo je moje prvo programiranje kodiranja, pa vas molim da, kada komentirate, ostavite oružje kod kuće (noževi su ipak prihvatljivi). S pojavom mp3 playera, ljudima je omogućeno nošenje neviđenih količina glazbe s njima u džepovima. Nije rijetkost čuti da ljudi imaju zbirke od 5, 10, čak 15 tisuća pjesama (a neki ljudi, čak i više). Od mp3 playera nijedan nije popularniji od Appleovog iPod -a i softvera koji ga pokreće, iTunes. S takvim velikim glazbenim bibliotekama, međutim, može postati pomalo dosadno riješiti se pjesama koje jednostavno ne zvuče dobro ili su privlačne više ti. Može proći nekoliko godina da prođete pjesmom po pjesmi kroz svoju glazbenu zbirku na iTunesu i riješite se pjesama koje vam se ne sviđaju. Tu dolazi ovo uputstvo. U ovom uputstvu pokazat ću vam način da se automatski riješite pjesama koji su jednostavno užasni, uz pomoć mog dobrog prijatelja, Perla. Dobro osnovno poznavanje Perla iznimno je korisno pri pokušaju ponavljanja ovog uputstva, iako nije potrebno (svakako biste mogli uzeti gotov kodni proizvod i kopirati/zalijepiti i to će raditi sasvim u redu). Za one koje zanima Perl, toplo preporučujem knjigu "Learning Perl" od O'Reillyja, to je dobro štivo i jedna od najbolje napisanih knjiga o Perlu koje sam imao prilike pročitati. VAŽNO: Iako će ovdje prikazane metode djelovati ako se učini ispravno, ne mogu i jednostavno neću prihvatiti nikakvu odgovornost ako učinite nešto glupo i izbrišete svoje dragocjene pjesme. Dobro razmislite o stvaranju sigurnosne kopije glazbenih datoteka prije nego što pokušate napisati ili izvršiti skriptu poput ove. Samo pogriješite sa strane opreza kako ne bismo povrijedili osjećaje ako ne učinite, hvala. Pročitajte upozorenje? (Da, čak i vi, osoba koja nije pročitala upozorenje) Odlično! Počnimo:-) Ažuriranje: Čini se da su neki perl skriptori naporno radili na pisanju iTunes skripti. Za razne skripte povezane s iTunesom pogledajte Teridonove skripte.

Korak 1: Početak

Početak rada
Početak rada

Kao i sve stvari, potrebno je malo pripremiti prije nego što možemo pokrenuti ovu skriptu. Dakle, stvari koje ćete morati automatski izbrisati s iTunes -a: 1) Računalo (duh) 2) iTunes (double duh) 3) Perl (teško je pokrenuti Perl skriptu bez Perla, zar ne?) 4) Vaš omiljeni uređivač (i sam sam zagovornik vi i vim -a, ali svaki uređivač teksta trebao bi uspjeti) 5) iPod (nije obavezno, ali lijepo ga je imati iz razloga koji će uskoro biti jasni) Dobivanje Perla: Slijedite upute ovdje, trebale bi biti dovoljno jednostavne: https://www.perl.com/download.cspKada ste Perl preuzeli, instalirali i spremni za rad, htjet ćemo neke pozadinske informacije o tome što radimo. Valja napomenuti da je skripta izvorno razvijena za Mac OS X, iako bi iste metode trebale djelovati na OS-ima koji nisu Unix-ovi, kao što je Windows. Vrijeme je za dosadan, ovaj, "obrazovni" dio Instructablea.

Korak 2: Osnovna ideja skripte

iTunes uključuje sustav ocjenjivanja s 5 zvjezdica koji korisnicima omogućuje ocjenjivanje pjesama. Pjesme s ocjenom 5 zvjezdica smatraju se najboljim pjesmama, dok se pjesme s ocjenom od 1 zvjezdice smatraju nekim od najgorih pjesama. U naše svrhe pretpostavit ćemo da je svaka pjesma kojoj nedostaje ocjena (poznata i kao 0 zvjezdica) ona koju korisnik još nije imao priliku ocijeniti. Osobno, prilikom ocjenjivanja pjesama, ako pjesma ima ocjenu od 1 zvjezdice, ja otkriti da je vjerojatno dovoljno loše da ne zaslužuje dragocjeni prostor na tvrdom disku koji pjesma zauzima. Stoga će Perl skripta koju ću vam predstaviti u ovom Instructable analizirati kroz iTunes knjižnicu i izbrisati sve pjesme koje su dodijeljene ocjeni s 1 zvjezdicom. Kao dodatni bonus, pjesme se mogu ocijeniti dok je korisnik u pokretu pomoću iPod -a. Na ovaj način možete odabrati pjesme za brisanje dok ste u pokretu, jednostavno ih ocijenite i one će se automatski izbrisati kada kasnije sinkronizirate iPod s računalom (ako automatski sinkronizirate iPod s računalom). Sada znamo što radimo, idemo vidjeti kako ćemo izvući informacije o pjesmi iz iTunesa za Perl skriptu.

Korak 3: XML knjižnica: ITunes -ov Goto Guy

XML knjižnica: ITunes -ov Goto Guy
XML knjižnica: ITunes -ov Goto Guy

Da bismo izbrisali pjesmu s računala na temelju njene ocjene, potrebne su nam dvije informacije: ocjena pjesme i mjesto pjesme. Srećom po nas postoji zgodna datoteka iz koje možemo dobiti sve informacije koje smo ikada željeli o iTunesu: XML datoteka iTunes Music Library. XML datoteka naziva se "iTunes Music Library.xml" i trebala bi se nalaziti u vašem glazbenom imeniku na vašem glavnom tvrdom disku.

O XML datoteci: iTunes xml datoteka je vrsta baze podataka koju održava iTunes i uvijek se ažurira. Kada se izvrši izmjena u iTunes -u, odgovarajući dio iTunes XML datoteke se mijenja kako bi se zabilježila ta promjena. Primjer unosa iz moje iTunes XML datoteke dat je u nastavku: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio datoteka Veličina3682382Ukupno vrijeme230138Datum Promijenjen2007-09-24T02: 11: 30ZDat dodan2008-05-28T05S68P97 25T01: 26: 58Ocjena40Ocjena albuma40Ocijena albuma IzračunatoTrajan ID9AC5DB9713240B44Traka vrste zapisaFilaLokacija: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20Broj%4Moja XML datoteka se sastoji od vrijednosti okruženih oznakama u HTML stilu. Za potrebe skripte, bit će nas zainteresirani bitovi zapisa zapisa, imena, izvođača, ocjene i lokacije. Ako gledate XML datoteku, možete primijetiti odozgo da ova pjesma ima "ocjenu" od 40. iTunes dodjeljuje svakoj pjesmi cijeli broj, u rasponu od 0 do 100, pri čemu je svakih 20 bodova dodatna zvjezdica za ocjenu. Dakle, ocjena 20 odgovara ocjeni s 1 zvjezdicom, ocjena 40 je ocjena s 2 zvjezdice i tako dalje, pri čemu je 100 ocjena s 5 zvjezdica. Pa sad kad znamo za XML datoteku, počnimo skriptirati

Korak 4: Vaš prijatelj ima heš (čak i ako niste u Amsterdamu)

Tvoj prijatelj Hash (čak i ako nisi u Amsterdamu)
Tvoj prijatelj Hash (čak i ako nisi u Amsterdamu)

Prije nego što možemo ukloniti datoteke, potrebna nam je radna baza podataka koja povezuje sve informacije o pjesmi zajedno. Iako se mogu koristiti sofisticiranije strukture podataka, poput niza raspršivača ili raspršivanja raspršivača, ova je skripta dovoljno jednostavna da zaslužuje korištenje jednostavnog popisa raspršivača. Za neupućene, raspršivanje nije ništa drugo do niz koji je indeksirano nizovima ili zbrkanom masom parova ključ/vrijednost. Može se zamisliti hash kao velika bačva s stvarima (vrijednostima) u njoj, a sve u metaforičkoj cijevi ima pričvršćenu oznaku (ključeve). Možete izvući bilo koji predmet iz cijevi jednostavno pronalaskom njegove oznake. Za više informacija o raspršivačima može biti korisna sljedeća veza: https://www.tutorialspoint.com/perl/perl_hashes.htmMožemo koristiti podatke da je svakoj pjesmi u iTunes XML datoteci dodijeljen jedinstveni ID zapisa za praćenje pjesme. Zbog toga trackID čini idealan ključ za raspršivanja. Stoga možemo postaviti 4 raspršivača za naslov pjesme, izvođača, ocjenu i lokaciju. Nakon što su oni uspostavljeni, možemo skenirati datoteku i napuniti našu hash bazu podataka koristeći neke jednostavne regularne izraze, koji će biti prikazani u nastavku.

Korak 5: (Vrlo) kratka lekcija o redovitim izrazima

Kako bismo izvukli naše hash unose iz XML datoteke, a i uštedjeli malo vremena na traženju, htjet ćemo pozvati pomoć jedne od moćnijih Perlovih značajki: regularni izraz. Napravit ću vrlo kratku lekciju o regularnim izrazima, ali za one od vas koji žele detaljnija objašnjenja, na internetu postoji mnogo dobrih vodiča za regularno izražavanje. Za dobar vodič za regularne izraze pogledajte https://perldoc.perl.org/perlretut.html. Ukratko, regularni izrazi pružaju nam skup alata za prolazak kroz nizove, zamjenu jednog niza drugim nizom ili spremanje dijelova niz za kasniju upotrebu. Regularni izrazi pružaju 2 funkcije, operatore podudaranja (m //) i zamjene (s //), koje će se koristiti za ovaj projekt. Za korištenje bilo koje od ovih funkcija u kontekstu dodjele, koristit ćemo Perlov operator vezanja (= ~), koji se koristi za vezanje uzorka na niz varijablu po izboru. Primjeri:

$ komentar = ~ /Purduecer /; #returns true ako $ comment string sadrži izraz "Purduecer" s/[a-z]/[A-Z]/; #uzmite sva mala slova u nizu i velikim slovima u $ _ nizuDruga korisna značajka regularnih izraza je memorijske varijable. U regularnim izrazima možete staviti određene stavke u zagrade, a zatim upotrijebiti posebne memorijske varijable podudaranja uzoraka $ 1, $ 2 itd. Za pristup dijelovima nizova koji su kasnije odgovarali tim dijelovima. Primjeri.

/(Instructables) Robot/; #Podudarajte bilo koji redak s izrazom "Instructables Robot" $ web stranica = $ 1; #Spremi rezultat uspješnog podudaranja uzorka koji se nalazi u prvom skupu zagrada #(u ovom slučaju varijabla $ 1 sadrži "Instructables")Konačno, u regularnim izrazima postoje određeni likovi koji služe posebnoj svrsi. To su bježanje od obrnute kose crte (sve bi to trebalo izgledati poznato programerima na C -u), klase znakova i metaznakovi. Na primjer, za podudaranje s bilo kojim slovom koje ima karticu s obje strane, mogli bismo reći

/\ t [a-zA-Z] t/Te se uglate zagrade koriste u regularnim izrazima za definiranje klase znakova. Pretpostavimo, međutim, da smo htjeli pronaći tekst zatvoren u uglatim zagradama u retku. Nismo to mogli jednostavno napisati onako kako jest, kako je prikazano u nastavku

/

/

Korak 6: Primjena regularnih izraza na ITunes skriptu

Primjena regularnih izraza na ITunes skriptu
Primjena regularnih izraza na ITunes skriptu

Nadamo se da sada imamo predodžbu o osnovnim temeljnim konceptima koji pokreću regularne izraze, vrijeme je da ih primijenimo na iTunes skriptu. Prilikom čitanja xml koda, određeni se znakovi, poput nagnute kose crte, susreću prilično često. Stoga ćemo iskoristiti činjenicu da operator m // omogućuje da odaberete koje god razdjelnike želite u kodu (koristit ćemo uglate zagrade, iako će drugi razdjelnici zasigurno raditi) Prije svega, potrebno je samo pročitati dio punu iTunes XML datoteku. Dijelovi datoteke koji sadrže informacije poput popisa za reprodukciju itd. Nisu potrebni. Prvi redak odjeljka popisa za reprodukciju, koji dolazi nakon informacija o pjesmi, izgleda ovako: Popisi za reprodukciju Stoga, u izvjesnoj petlji, možemo dodati iskaz koji preskače do kraja čitanja datoteke ako se naiđe na taj redak.

while () {#loop_instructions_here last if ($ _ = ~ m [Popisi pjesama))}Zatim, za izradu ID-ova raspršivanja, možemo upotrijebiti stablo if-elsif za izradu heševa baze podataka, koristeći varijable memorijskog podudaranja o kojima smo saznali u prethodnom koraku za spremanje vrijednosti u raspršivače

ako je ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Ocjena (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Ime (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Umjetnik (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Sada kada smo izgradili osnovu naše hash baze podataka, pokriti ćemo lociranje i uklanjanje datoteka s 1 zvjezdicom, pa naprijed na sljedeći korak!

Korak 7: Pronalaženje i brisanje tih zapisa s 1 zvjezdicom

Pronalaženje i brisanje tih zapisa s 1 zvjezdicom
Pronalaženje i brisanje tih zapisa s 1 zvjezdicom

Sad kad smo postavili bazu podataka, vrijeme je za traženje zapisa s 1 zvjezdicom kako bismo ih mogli izbrisati. Perl nudi korisnu konstrukciju petlje zvanu foreach petlja koja se može koristiti za ponavljanje svih ključeva naših raspršivača. Treba napomenuti da neće svaki zapis u vašoj iTunes knjižnici imati unos u raspršivanje ocjena. To je zato što se pjesmama koje nemaju ocjenu ne daje ocjenjivačka linija u iTunes XML datoteci. Stoga ćemo pri petljanju po raspršivačima htjeti upotrijebiti sljedeću konstrukciju:

foreach $ id (ključevi za sortiranje %rate_hash) { #… ovdje umetnite kôd za ponavljanje}Nakon toga, jednostavno je upotrijebiti sljedeću izjavu

prekinuti vezu $ loc_hash {$ id} ako je $ rate_hash {$ id} == 20;Funkcija poništavanja veze koja se koristi u gore navedenom primjeru koda Perl je način brisanja datoteka. Možda ćete doći u iskušenje da upotrijebite sistemski poziv na funkciju brisanja operacijskog sustava, ali iz razloga prenosivosti kod koji sam napisao ne koristi sistemski poziv. Sada imamo osnovnu strukturu za naš kôd. U sljedećim koracima napravit ćemo neka poboljšanja koda kako biste imali potpuno funkcionalnu i funkcionalnu skriptu kako biste se riješili dosadnih 1 zvjezdica.

Korak 8: URI bježi i kako ih zaobići

Ako pokušate pokrenuti skriptu onakvu kakva jest, naići ćete na brojne pogreške operacijskog sustava, a ako pogledate staze datoteka koje pokušavate izbrisati, možda ćete pronaći nepoželjne znakove ugrađene u staze. Postoje prilično dobre šanse da ti putovi sadrže URI znakove za izbjegavanje. Što su URI bijegovi? U HTML -u i XML -u, URI izbjegavajući znakovi (poznati i kao URI bijegovi) posebni su metaznakovi koji se koriste za traženje doslovnih instanci tog znaka. Na primjer, nikada nećete vidjeti jednostavan razmak u nizu znakova XML. Vidjet ćete, međutim, XML prikaz jednostavnog razmaka, %20. (Sigurno ste ih vidjeli na URL traci u pregledniku i zapitali ste se što su. Pa, sada znate) URI bijeg sastoji se od znaka % nakon kojeg slijedi dvoznamenkasti heksadecimalni kôd koji predstavlja ASCII vrijednost znaka. Na ovom mjestu točka, mogli biste napisati čitav niz zamjenskih izjava na hash lokacije kako biste zamijenili svaki mogući metakarakter s kojim se susretnete (tj. $ loc_hash {$ id} = ~ s/%20//; i tako dalje). Srećom, Perl nudi bolji način za rješavanje ovih stvari. Perl dolazi u paketu s modulom pod nazivom URI:: Escape, koji ima ugrađenu funkciju, uri_unescape, koja će umjesto nas ukloniti URI bijege.. Da biste koristili modul, jednostavno dodajte sljedeći redak na vrh koda:

koristiti URI:: Escape;Sada, nakon što dodijelimo niz $ loc_hash {$ id} u petlji XML datoteke, nakon toga možemo dodati sljedeći redak

uri_unescape ($ loc_hash {$ id});Gornji redak automatski uklanja sve znakove za izbjegavanje URI -a. Kao dodatni bonus, prevodi i neke međunarodne likove. Pokrenuo sam skriptu s nekoliko putova datoteka koji su sadržavali japanski konji, a funkcija uri_unescape prevela je XML formate tih znakova u njihove izvorne znakove kako bi prekid veze mogao uspješno izbrisati datoteku. Prije nego što nastavimo, potrebno je poduzeti još jedan korak. Iz razloga koje ne razumijem u potpunosti, iTunes kodira simbol ampersanda (&) kao & u svojim nizovima. Ako netko zna zašto je to tako, neka mi se javi. U međuvremenu ćemo eliminirati ovaj problem dodavanjem sljedećeg retka ispod linije uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;Sada će skripta imati putanje datoteka bez čudnih znakova, a funkcija prekidanja veze moći će pronaći datoteke na odgovarajućim mjestima kako bi ih izbrisala. Pa, bit će ako koristite Mac OSX (a vjerojatno i većinu drugih Unix-ovih OS-ova). Čitajte dalje kako biste skriptu učinili kompatibilnom na drugim operativnim sustavima (naime, Windows).

Korak 9: Dodavanje kompatibilnosti skripti u sustav Windows

Dodavanje kompatibilnosti skripti u sustav Windows
Dodavanje kompatibilnosti skripti u sustav Windows

Skripta, kako je dosad napisana, učinkovito uklanja zapise na operativnim sustavima temeljenim na Unixu. Da bi funkcionirao u sustavu Windows, potreban je jedan manji dodatak. Za razliku od Mac i drugih OS-a temeljenih na Unixu, Windows ne podržava koncept jedinstvenog korijenskog direktorija. Stoga svi nazivi puteva počinju s volumenom (C: ili E: ili bilo kojim drugim slovom koje se sjetite), za razliku od korijenskog direktorija (/). Na našu sreću, Perl ima posebnu varijablu, $O (to je veliko o, a ne nula), to nam govori koji operativni sustav trenutno koristimo. Dakle, ako vrijednost pohranjena u toj varijabli sadrži "Win", htjet ćemo ukloniti vodeću kosu crtu na našoj putanji datoteke XML lokacije. To se može učiniti sa sljedećim retkom koda (dodan nakon što smo uspješno raščlanili lokaciju zapisa iz XML datoteke):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) ako je $^O = ~ /Win /i;Sada će skripta raditi bez obzira radi li se na OS X ili Windows.

Korak 10: Dovršena skripta

Dovršena skripta
Dovršena skripta

U privitku je moja verzija dovršene iTunes skripte za automatsko brisanje, za one od vas koji su samo htjeli krajnji proizvod, a ne objašnjenje o tome kako radi.

Da biste koristili skriptu, htjet ćete datoteku spremiti kao perl datoteku (.pl ekstenziju), a zatim je učiniti izvršnom (chmod 751 u Unixu, nisam siguran što je to za Windows sustave).

Preporučeni: