Sadržaj:

Izbrišite te neželjene ITunes pjesme sa svog računara: 10 koraka
Izbrišite te neželjene ITunes pjesme sa svog računara: 10 koraka

Video: Izbrišite te neželjene ITunes pjesme sa svog računara: 10 koraka

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

Zdravo dame i gospodo, ovo je moje prvo uputstvo za kodiranje, pa vas molim da, kada komentirate, ostavite oružje kod kuće (noževi su ipak prihvatljivi). Pojavom mp3 playera, ljudima je omogućeno nošenje neviđenih količina muzike sa njima u džepovima. Nije neuobičajeno čuti ljude koji imaju zbirke od 5, 10, čak 15 hiljada 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. Međutim, s takvim velikim muzičkim bibliotekama može biti pomalo dosadno riješiti se pjesama koje jednostavno ne zvuče dobro ili su privlačne više ti. Može proći mnogo godina da prođete pjesmu po pjesmu kroz svoju muzičku kolekciju na iTunes -u 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 znanje o Perlu izuzetno je korisno pri pokušaju ponavljanja ovog uputstva, iako nije potrebno (svakako biste mogli uzeti gotov proizvod i kopirati/zalijepiti to će funkcionirati 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 funkcionirati ako se uradi ispravno, ne mogu i jednostavno neću prihvatiti nikakvu odgovornost ako učinite nešto glupo i izbrišete svoje dragocjene pjesme. Molimo vas da odlučite napraviti sigurnosnu kopiju svojih muzičkih datoteka prije nego što pokušate napisati ili izvršiti skriptu poput ove. Samo pogriješite sa strane opreza kako ne bismo imali povrijeđenih osjećaja ako to 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 iTunes-om pogledajte Teridon-ove skripte.

Korak 1: Početak

Počinjemo
Počinjemo

Kao i sve stvari, potrebno je malo pripremiti se prije nego što možemo pokrenuti ovu skriptu. Dakle, stvari koje će vam trebati za automatsko brisanje pjesama iz iTunes -a: 1) Računar (duh) 2) iTunes (double duh) 3) Perl (teško je pokrenuti Perl skriptu bez Perla, zar ne?) 4) Vaš omiljeni uređivač (ja sam zagovornik vi i vim -a, ali svaki uređivač teksta bi trebao uspjeti) 5) iPod (nije obavezno, ali ga je lijepo imati iz razloga koji će uskoro biti jasni) Dobijanje 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 šta radimo. Treba napomenuti da je skripta izvorno razvijena za Mac OS X, iako bi iste metode trebale funkcionirati na OS-ima koji nisu Unix, poput Windows-a. Vrijeme je za dosadan, "obrazovni" dio Instructablea.

Korak 2: Osnovna ideja skripte

iTunes uključuje sistem ocjenjivanja sa 5 zvjezdica koji omogućava korisnicima da ocjenjuju pjesme. 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 ćemo pretpostaviti 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 otkrili da je vjerovatno dovoljno loše da ne zaslužuje dragocjeni prostor na tvrdom disku koji pjesma zauzima. Stoga će Perl skripta koju ću vam predstaviti u ovoj Instructable analizirati kroz iTunes biblioteku i izbrisati svaku pjesmu kojoj je dodijeljena ocjena od 1 zvjezdice. Kao dodatni bonus, pjesme se mogu ocijeniti dok je korisnik u pokretu korišćenjem iPod -a. Na ovaj način možete odabrati pjesme za brisanje dok ste u pokretu jednostavnim ocjenjivanjem i one će se automatski izbrisati kada kasnije sinhronizirate iPod sa računarom (ako automatski sinhronizirate iPod sa računarom). Sada znamo šta radimo, da vidimo kako ćemo izvući informacije o pjesmi iz iTunes -a za Perl Script.

Korak 3: XML biblioteka: ITunes -ov Goto Guy

XML biblioteka: ITunes -ov Goto Guy
XML biblioteka: ITunes -ov Goto Guy

Da bismo izbrisali pjesmu s računara na osnovu njene ocjene, potrebne su nam 2 informacije: ocjena pjesme i lokacija pjesme. Na našu sreću postoji zgodna datoteka iz koje možemo dobiti sve informacije koje smo ikada željeli o iTunes -u: XML datoteka iTunes Music Library. XML datoteka se zove "iTunes Music Library.xml" i trebala bi se nalaziti u vašem muzičkom direktoriju na glavnom čvrstom 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 ova promjena. Primjer unosa iz moje iTunes XML datoteke dat je u nastavku: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio datoteka Veličina3682382Ukupno vrijeme230138Datum Izmjena2007-09-24T02: 11: 30ZDat Dodano2008-05-28T05P68: 00P24P100 25T01: 26: 58Ocjenjivanje40Ocjena albuma40 Ocjena albuma RačunatoTrajan ID9AC5DB9713240B44Traka zapisaFilaLokacija: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20Braka%20Meraka 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)

Vaš prijatelj haš (čak i ako niste u Amsterdamu)
Vaš prijatelj haš (čak i ako niste u Amsterdamu)

Prije nego što uklonimo 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šivanja, ova je skripta dovoljno jednostavna da zaslužuje upotrebu jednostavne liste 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 sa 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 heševima može biti korisna sljedeća veza: https://www.tutorialspoint.com/perl/perl_hashes.htmMožemo koristiti informacije da je svakoj pjesmi u iTunes XML datoteci dodijeljen jedinstveni ID zapisa za praćenje pesme. Zbog toga, trackID čini idealan ključ za raspršivanje. 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 popuniti našu hash bazu podataka koristeći neke jednostavne regularne izraze, koji će biti prikazani u nastavku.

Korak 5: (Vrlo) kratka lekcija o regularnim izrazima

Kako bismo izvukli naše hash unose iz XML datoteke, a i uštedjeli malo vremena na pretraživanju, 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 o regularnom izrazu. Pogledajte https://perldoc.perl.org/perlretut.html za dobar vodič za regularne izraze. Ukratko, regularni izrazi nam pružaju 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. Da bismo koristili bilo koju od ovih funkcija u kontekstu dodjele, upotrijebit ćemo Perlov operater vezivanja (= ~), koji se koristi za vezivanje uzorka za string varijablu po izboru. Primjeri:

$ comment = ~ /Purduecer /; #returns true ako $ comment string sadrži izraz "Purduecer" s/[a-z]/[A-Z]/; #uzmite sva mala slova u niz i velika slova u $ _ nizuDruga korisna karakteristika regularnih izraza je memorijska varijabla. U regularnim izrazima možete staviti određene stavke u zagrade, a zatim koristiti posebne memorijske varijable za podudaranje uzoraka $ 1, $ 2 itd. Za pristup dijelovima nizova koji su kasnije odgovarali ovim dijelovima. Primjeri.

/(Instrukcije) Robot/; #Uskladite bilo koji red sa izrazom "Instructables Robot" $ web stranica = $ 1; #Sačuvaj rezultat uspješnog podudaranja uzorka sadržanog 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. Ovo su povratne kose crte (sve bi to trebalo da izgleda poznato C programerima), 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/Ove uglate zagrade se koriste u regularnim izrazima za definiranje klase znakova. Pretpostavimo, međutim, da smo htjeli pronaći tekst zatvoren u uglastim zagradama u redu. Nismo ga mogli jednostavno napisati onakvim kakav jeste, kao što 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 sigurno raditi) Prije svega, potrebno je samo pročitati dio potpuna iTunes XML datoteka. Dijelovi datoteke koji sadrže informacije poput spiskova za reprodukciju itd. Nisu potrebni. Prvi red odjeljka lista pjesama, koji dolazi nakon informacija o pjesmi, izgleda ovako: Liste za reprodukciju Stoga, u izvjesnoj petlji, možemo dodati izjavu koja prelazi na kraj čitanja datoteke ako se naiđe na tu liniju.

while () {#loop_instructions_here last if ($ _ = ~ m [Playlists])}Zatim, za izradu ID-ova raspršivanja, možemo koristiti 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 heševe

if ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Ocjena (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Ime (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Izvođač (.+)]) {$ 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 sa 1 zvjezdicom, pa naprijed na sljedeći korak!

Korak 7: Pronađite i izbrišite te staze s 1 zvjezdicom

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

Sada kada smo postavili našu bazu podataka, vrijeme je za traženje zapisa s 1 zvjezdicom kako bismo ih mogli izbrisati. Perl nudi korisnu konstrukciju petlje koja se naziva foreach petlja koja se može koristiti za ponavljanje svih ključeva naših hashova. Treba napomenuti da neće svaka pjesma u vašoj iTunes biblioteci imati unos u hash ocjene. To je zato što se pjesmama koje nemaju ocjenu ne daje linija za ocjenjivanje u iTunes XML datoteci. Stoga ćemo pri petlji kroz heševe htjeti koristiti sljedeću konstrukciju:

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

prekinuti vezu $ loc_hash {$ id} ako je $ rate_hash {$ id} == 20;Funkcija prekidanja veze koja se koristi u gornjem primjeru koda je Perlov način brisanja datoteka. Možda ćete biti u iskušenju da upotrijebite sistemski poziv na funkciju brisanja operativnog sistema, 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 mogli imati potpuno funkcionalnu skriptu kako biste se riješili dosadnih 1 zvjezdica.

Korak 8: URI bjekstva i kako ih zaobići

Ako pokušate pokrenuti skriptu onakvom kakva je, naići ćete na brojne greške vašeg operativnog sistema, a ako pogledate putanje datoteka koje pokušavate izbrisati, možda ćete pronaći nepoželjne znakove ugrađene u putanje. Postoje prilično dobre šanse da ove staze sadrže URI znakove za izbjegavanje. Šta su URI izbjegavanja? U HTML -u i XML -u, URI izbjegavajući znakovi (poznati i kao URI bijegovi) su posebni metaznakovi koji se koriste za traženje doslovnih instanci tog znaka. Na primjer, nikada nećete vidjeti jednostavan razmak u nizu XML znakova. Vidjet ćete, međutim, XML prikaz jednostavnog razmaka, %20. (Sigurno ste ovo vidjeli u URL traci u svom pregledniku i zapitali ste se šta su to. Pa, sada znate) URI bijeg sastoji se od znaka % nakon kojeg slijedi dvocifreni heksadecimalni kôd koji predstavlja ASCII vrijednost znaka. Na ovom mjestu tačka, mogli biste napisati čitav niz zamjenskih izjava na hash lokacije kako biste zamijenili sve moguće metakaraktere na koje naiđete (npr. $ loc_hash {$ id} = ~ s/%20//; itd.). 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 red automatski uklanja sve URI znakove za izbjegavanje. Kao dodatni bonus, prevodi i neke međunarodne likove. Pokrenuo sam skriptu s nekoliko putanja datoteka koje su imale japanski konji u sebi, 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 nastavimo, mora se poduzeti još jedan korak. Iz razloga koje ne razumijem u potpunosti, iTunes kodira simbol ampersanda (&) kao & u svojim nizovima. Molim vas ako neko zna zašto je to tako. U međuvremenu ćemo eliminirati ovaj problem dodavanjem sljedeće linije 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 lokacijama kako bi ih izbrisala. Pa, bit će ako koristite Mac OSX (a vjerovatno i većinu drugih operativnih sistema zasnovanih na Unixu). Čitajte dalje kako biste skriptu učinili kompatibilnom na drugim operativnim sistemima (naime, Windows).

Korak 9: Dodavanje kompatibilnosti skripti u Windows

Dodavanje kompatibilnosti skripti u Windows
Dodavanje kompatibilnosti skripti u Windows

Skripta, kako je do sada napisano, efikasno uklanja tragove na Unix-ovim operativnim sistemima. Da bi funkcionirao na Windowsima, potreban je jedan manji dodatak. Za razliku od Mac-a i drugih OS-a zasnovanih na Unixu, Windows ne podržava koncept jedinstvenog korijenskog direktorija. Stoga svi nazivi staza počinju s volumenom (C: ili E: ili bilo kojim drugim slovom na koje se možete sjetiti), 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 sistem 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 pomoću sljedeće linije koda (dodano 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 prilogu 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, niste sigurni šta je to za Windows sisteme).

Preporučuje se: