Kazalo:

Izbrišite tiste neželene pesmi ITunes iz računalnika: 10 korakov
Izbrišite tiste neželene pesmi ITunes iz računalnika: 10 korakov

Video: Izbrišite tiste neželene pesmi ITunes iz računalnika: 10 korakov

Video: Izbrišite tiste neželene pesmi ITunes iz računalnika: 10 korakov
Video: CS50 2015 - Week 6 2024, Julij
Anonim
Izbrišite tiste neželene pesmi ITunes iz računalnika
Izbrišite tiste neželene pesmi ITunes iz računalnika

Pozdravljeni, dame in gospodje, to je moje prvo kodiranje, zato prosim, ko komentirate, pustite puške doma (noži pa so sprejemljivi). glasbe naokoli z njimi v žepih. Ni redkost slišati, da imajo ljudje zbirke 5, 10, celo 15 tisoč pesmi (in nekateri ljudje, še več). Od mp3 predvajalnikov ni nobenega bolj priljubljenega kot Appleov iPod in programska oprema, ki ga poganja, iTunes. Pri takšnih velikih glasbenih knjižnicah pa se lahko znebi pesmi, ki preprosto ne zvenijo dobro ali se jim ne zdijo privlačne ti več. Lahko traja več let, da se po svoji glasbeni zbirki v iTunesu odpravite skladbo po skladbi in se znebite pesmi, ki vam niso všeč. Tam pride ta pouk. V tem navodilu vam bom pokazal način, kako se pesmi samodejno znebiti To je preprosto grozno, z nekaj pomoči mojega dobrega prijatelja Perla. Dobro osnovno znanje o Perlu je zelo koristno, ko poskušate ponoviti ta navodila, čeprav ni potrebno (zagotovo lahko vzamete končni kodni izdelek in ga kopirate/prilepite). in bo delovalo v redu). Za tiste, ki jih zanima Perl, toplo priporočam knjigo "Learning Perl" od O'Reillyja, to je dobro branje in ena najboljših napisanih knjig o Perlu, ki sem jih imel priložnost prebrati. POMEMBNO: Čeprav bodo tukaj predstavljene metode delovale če je narejeno pravilno, ne morem in preprosto ne bom sprejel nobene odgovornosti, če naredite kaj neumnega in izbrišete svoje dragocene pesmi. Preden poskusite napisati ali izvesti skript, kot je naslednji, močno razmislite o varnostnem kopiranju glasbenih datotek. Naredite samo previdnost na strani previdnosti, da v nasprotnem primeru ne bomo imeli občutkov, hvala. Ali ste prebrali opozorilo? (Ja, tudi ti, oseba, ki nisi prebrala opozorila) Odlično! Začnimo:-) Posodobitev: Zdi se, da so nekateri pisci perl trdo delali pri pisanju skriptov iTunes. Za različne skripte, povezane z iTunes, si oglejte Teridonove skripte.

1. korak: Začnite

Začetek
Začetek

Tako kot pri vseh stvareh je treba še malo pripraviti, preden lahko zaženemo ta skript. Torej, stvari, ki jih boste morali samodejno izbrisati skladbe iz iTunes: 1) računalnik (duh) 2) iTunes (double duh) 3) Perl (težko je zagnati skript Perl brez Perla, ne bi rekli?) 4) vaš najljubši urejevalnik (sam sem zagovornik vi in vim -a, vendar bi moral vsak urejevalnik besedil narediti trik) 5) iPod (ni obvezen, vendar ga je lepo imeti zaradi razlogov, ki bodo kmalu razjasnjeni) Pridobivanje Perla: Sledite Ta navodila bi morala biti dovolj preprosta: https://www.perl.com/download.csp Ko naložite, namestite in pripravite Perl, bomo želeli nekaj osnovnih informacij o tem, kaj počnemo. Treba je opozoriti, da je bil skript prvotno razvit za Mac OS X, čeprav bi morale iste metode delovati tudi v operacijskih sistemih, ki ne temeljijo na Unixu, kot je Windows. Čas je za dolgočasen, "izobraževalni" del Instructable.

2. korak: Osnovna ideja skripta

iTunes vključuje sistem ocenjevanja s 5 zvezdicami, ki uporabnikom omogoča ocenjevanje pesmi. Pesmi z oceno 5 zvezdic veljajo za najboljše pesmi, pesmi z oceno 1 pa za nekatere najslabše. Za naše namene bomo domnevali, da je vsaka pesem, ki nima ocene (znana tudi kot 0 zvezdic), tista, ki je uporabnik še ni imel možnosti oceniti. ugotovil, da je verjetno dovolj slabo, da si ne zasluži dragocenega prostora na trdem disku, ki ga pesem zavzame. Zato bo skript Perl, ki vam ga bom predstavil v tem navodilu, razčlenjeval knjižnico iTunes in izbrisal vse skladbe, ki jim je bila dodeljena ocena z 1 zvezdico. Kot dodaten bonus lahko pesmi ocenite, ko je uporabnik na poti z uporabo iPod -a. Na ta način lahko izberete pesmi za brisanje, ko ste na poti, tako da jih preprosto ocenite in bodo samodejno izbrisane, ko pozneje sinhronizirate iPod z računalnikom (če iPod samodejno sinhronizirate z računalnikom). Zdaj vemo, kaj delamo, poglejmo, kako bomo potegnili podatke o pesmi iz iTunes za skript Perl.

3. korak: Knjižnica XML: ITunes 'Goto Guy

Knjižnica XML: ITunes 'Goto Guy
Knjižnica XML: ITunes 'Goto Guy

Za izbris skladbe iz računalnika glede na njeno oceno potrebujemo 2 podatka: oceno pesmi in lokacijo pesmi. Na srečo za nas obstaja priročna datoteka, iz katere lahko dobimo vse informacije, ki smo jih kdaj želeli o iTunes: datoteka XML glasbene knjižnice iTunes. Datoteka XML se imenuje "iTunes Music Library.xml" in bi morala biti v vašem imeniku Glasba na vašem glavnem trdem disku.

O datoteki XML: Datoteka xTunes iTunes je nekakšna zbirka podatkov, ki jo vzdržuje iTunes in je vedno posodobljena. Ko se v iTunes izvede sprememba, se ustrezni del datoteke XML iTunes spremeni tako, da se upošteva ta sprememba. Vzorec vnosa iz moje datoteke iTunes XML je podan spodaj: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG zvočna datoteka Velikost3682382Skupni čas230138Datum spremenjen2007-09-24T02: 11: 30ZDat dodano2008-05-28T05P68: 00P24P100 25T01: 26: 58 Ocena 40 Ocena albuma 40 Ocena albuma Izračunana Trajna ID9AC5DB9713240B44 Vrsta slediFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Neznan datoteka XML je sestavljena iz vrednosti, obdanih z oznakami v slogu HTML. Za namene scenarija nas bodo zanimali podatki o skladbi, imenu, izvajalcu, oceni in lokaciji. Če gledate datoteko XML, lahko od zgoraj opazite, da ima ta pesem "oceno" 40. iTunes vsaki pesmi dodeli celo število od 0 do 100, pri čemer je vsakih 20 točk dodatna zvezdica za oceno. Torej ocena 20 ustreza oceni z 1 zvezdico, ocena 40 je ocena z 2 zvezdicami itd., Pri čemer je 100 ocena s 5 zvezdicami. Zdaj, ko vemo za datoteko XML, začnimo pisati skripte

4. korak: Vaš prijatelj je heš (tudi če niste v Amsterdamu)

Tvoj prijatelj Hash (tudi če nisi v Amsterdamu)
Tvoj prijatelj Hash (tudi če nisi v Amsterdamu)

Preden lahko odstranimo datoteke, potrebujemo delujočo bazo podatkov, ki povezuje vse podatke o pesmi skupaj. Čeprav je mogoče uporabiti bolj izpopolnjene podatkovne strukture, na primer niz razpršilnikov ali razpršitev razpršilnikov, je ta skript dovolj preprost, da si zasluži uporabo preprostega seznama razpršilcev. je indeksirano z nizi ali zbrano maso parov ključ/vrednost. Za razpršitev si lahko predstavljamo velik sod, v katerem so stvari (vrednosti), vse v metaforičnem sodu pa ima pritrjeno oznako (ključe). Vsak predmet v sodu lahko izvlečete tako, da preprosto poiščete njegovo oznako. Za več informacij o razprševanjih je lahko koristna naslednja povezava: https://www.tutorialspoint.com/perl/perl_hashes.htm Uporabljamo lahko podatke, da je vsaki skladbi v datoteki XML iTunes dodeljen edinstven ID skladbe, s katero lahko sledimo pesmi. Zaradi tega je trackID idealen ključ za razpršitve. Zato lahko nastavimo 4 razpršitve za naslov pesmi, izvajalca, oceno in lokacijo. Ko so te ugotovljene, lahko pregledamo datoteko in napolnimo bazo podatkov z razpršitvami z nekaj preprostimi regularnimi izrazi, ki bodo prikazani v nadaljevanju.

5. korak: (zelo) kratka lekcija o rednih izrazih

Da bi vzeli svoje hash vnose iz datoteke XML in prihranili malo časa pri iskanju, se bomo želeli obrniti na pomoč ene izmed močnejših Perlovih funkcij: regularnega izraza. Naredil bom zelo kratko lekcijo o regularnih izrazih, toda za tiste, ki želite podrobnejše razlage, je na spletu veliko dobrih vaj za redno izražanje. Oglejte si https://perldoc.perl.org/perlretut.html za dobro vadnico za regularne izraze. Skratka, regularni izrazi nam ponujajo nabor orodij za pregled nizov, zamenjavo enega niza z drugim ali shranjevanje delov niz za kasnejšo uporabo. Regularni izrazi ponujajo 2 funkciji, operatorja ujemanja (m //) in zamenjave (s //), ki se bosta uporabljala za ta projekt. Za uporabo katere koli od teh funkcij v kontekstu dodeljevanja bomo uporabili Perlov operator vezave (= ~), ki se uporablja za vezavo vzorca na spremenljivko niza po izbiri.

$ comment = ~ /Purduecer /; #returns true, če niz $ comment vsebuje frazo "Purduecer" s/[a-z]/[A-Z]/; #vzemite vse male črke v niz in jih vnesite z veliko črko $ _Druga uporabna lastnost regularnih izrazov je značilnost pomnilniških spremenljivk. V regularnih izrazih lahko določene postavke postavite v oklepaje in nato uporabite posebne pomnilniške spremenljivke $ 1, $ 2 itd. Za dostop do delov nizov, ki so se kasneje ujemali s temi deli.

/(Instructables) Robot/; #Ujemite katero koli vrstico s frazo "Instructables Robot" $ spletno mesto = $ 1; #Shrani rezultat uspešnega ujemanja vzorca iz prvega niza zarez #(v tem primeru spremenljivka $ 1 vsebuje "Instructables")Nazadnje, v regularnih izrazih obstajajo določeni znaki, ki služijo posebnemu namenu. To so pobegi poševnice (vsi bi morali biti programerjem C znani), razredi znakov in metaznaki. Na primer, če bi se ujemali s katero koli črko, ki ima jeziček na obeh straneh, bi lahko rekli

/\ t [a-zA-Z] t/Ti oglati oklepaji se uporabljajo v regularnih izrazih za opredelitev razreda znakov. Predpostavimo, da smo želeli v vrstici poiskati besedilo, zaprto v oglatih oklepajih. Ne moremo ga preprosto zapisati takšnega, kot je prikazano spodaj

/

/

6. korak: Uporaba regularnih izrazov za skript ITunes

Uporaba regularnih izrazov za skript ITunes
Uporaba regularnih izrazov za skript ITunes

Zdaj, ko upamo, da imamo nekaj pojma o osnovnih konceptih, ki poganjajo regularne izraze, je čas, da jih uporabimo za skript iTunes. Pri branju kode xml se dokaj pogosto pojavljajo nekateri znaki, na primer poševnica naprej. Zato bomo izkoristili dejstvo, da vam operater m // omogoča, da v kodi izberete poljubne razmejevalce (uporabili bomo oglate oklepaje, čeprav bodo drugi razmejevalniki zagotovo delovali) Najprej moramo prebrati le del celotno datoteko iTunes XML. Deli datoteke, ki vsebujejo informacije, kot so seznami predvajanja itd., Niso potrebni. Prva vrstica razdelka s seznami predvajanja, ki sledi za informacijami o skladbi, izgleda takole: Seznami predvajanja Zato lahko v nekaj časa dodamo stavek, ki skoči na konec branja datoteke, če naletimo na to vrstico.

while () {#loop_instructions_here last if if ($ _ = ~ m [Seznami predvajanja])}}Nato za izdelavo ID-jev razpršitve lahko uporabimo drevo if-elsif za izdelavo razpršilnikov baze podatkov, pri čemer uporabimo spremenljivke ujemanja pomnilnika, o katerih smo izvedeli v prejšnjem koraku, da shranimo vrednosti v razpršilnike

če ($ _ = ~ m [( d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Ocena ( d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Ime (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Izvajalec (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Zdaj, ko smo zgradili osnovo naše hash baze podatkov, bomo zajeli iskanje in odstranjevanje datotek z 1 zvezdico, zato naprej na naslednji korak!

7. korak: Poiščite in izbrišite te skladbe z 1 zvezdico

Iskanje in brisanje skladb z 1 zvezdico
Iskanje in brisanje skladb z 1 zvezdico

Zdaj, ko imamo nastavljeno bazo podatkov, je čas, da poiščemo skladbe z 1 zvezdico, da jih lahko izbrišemo. Perl ponuja uporabno konstrukcijo zanke, imenovano foreach zanka, ki jo lahko uporabite za ponovitev vseh ključev naših razpršilcev. Opozoriti je treba, da vsaka skladba v vaši knjižnici iTunes ne bo imela vnosa v razpršitvi ocen. To je zato, ker skladbam, ki nimajo ocene, v datoteki iTunes XML ni dodeljena vrstica za oceno skladbe. Zato bomo pri ponavljanju po razpršilcih želeli uporabiti naslednjo konstrukcijo:

foreach $ id (tipke za razvrščanje %rate_hash) { #… sem vnesite kodo zanke}Po tem je tako preprosto, kot da uporabite naslednjo izjavo

prekinite povezavo $ loc_hash {$ id}, če je $ rate_hash {$ id} == 20;Funkcija prekinitve povezave, uporabljena v zgornji vzorčni kodi, je Perlov način brisanja datotek. Morda vas bo zamikala uporaba sistemskega klica na funkcijo brisanja operacijskega sistema, vendar zaradi prenosljivosti koda, ki sem jo napisala, ne uporablja sistemskega klica. Zdaj imamo osnovno strukturo za našo kodo. V naslednjih korakih bomo kodo nekoliko izboljšali, da boste imeli popoln in funkcionalen skript, da se znebite teh nadležnih 1 zvezdic.

8. korak: URI pobegne in kako se jim izogniti

Če poskusite zagnati skript takšen, kot je, boste v operacijskem sistemu naleteli na številne napake. Če pogledate poti datotek, ki jih poskušate izbrisati, boste morda našli nenavadne znake, vdelane v poti, ki so nezaželene. Obstaja velika verjetnost, da te poti vsebujejo URI ubežne znake. V HTML in XML so ubežni znaki URI (znani tudi kot uri URI) posebni metaznaki, ki se uporabljajo za iskanje dobesednih primerkov tega znaka. Na primer, v nizu znakov XML nikoli ne boste videli preprostega presledka. Videli pa boste predstavitev XML preprostega presledka, %20. (Zagotovo ste to videli v vrstici URL v svojem brskalniku in se spraševali, kaj so. No, zdaj veste) Ubež URI je sestavljen iz znaka %, ki mu sledi 2-mestna šestnajstiška koda, ki predstavlja vrednost ASCII znaka. točka, lahko napišete cel kup nadomestnih stavkov na hash lokacije, da nadomestite vse možne metaznake, na katere naletite (tj. $ loc_hash {$ id} = ~ s/%20//; itd.). Na srečo pa Perl ponuja boljši način za reševanje teh stvari. Perl je priložen modulu z imenom URI:: Escape, ki ima vgrajeno funkcijo uri_unescape, ki nam bo pomagala pri odpravljanju pobegov URI.. Če želite uporabiti modul, preprosto dodajte naslednjo vrstico na vrhu kode:

uporabite URI:: Escape;Zdaj, ko v datotečni zanki XML dodelimo niz $ loc_hash {$ id}, lahko nato dodamo naslednjo vrstico

uri_unescape ($ loc_hash {$ id});Zgornja vrstica samodejno odstrani vse ubežne znake URI. Kot dodaten bonus prevaja tudi nekatere mednarodne znake. Scenarij sem zagnal z nekaj potmi datotek, v katerih je bil japonski konji, funkcija uri_unescape pa je prevedla oblike XML teh znakov v njihove izvirne znake, tako da je prekinjena povezava lahko uspešno izbrisala datoteko. Preden nadaljujemo, je treba narediti še en korak. Zaradi razlogov, ki jih ne razumem v celoti, iTunes kodira znak ampersand (&) kot & v svojih nizih. Če kdo ve zakaj je tako, naj mi prosim sporoči. Medtem to težavo odpravimo tako, da pod vrstico uri_unescape dodamo naslednjo vrstico

$ loc_hash {$ id} = ~ s/&#/&/;Zdaj bodo skripte imele poti datotek brez čudnih znakov, funkcija prekinitve povezave pa bo lahko poiskala datoteke na ustreznih mestih in jih izbrisala. No, bo, če uporabljate Mac OSX (in verjetno tudi večino drugih operacijskih sistemov, ki temeljijo na Unixu). Preberite, kako narediti skript združljiv v drugih operacijskih sistemih (in sicer v sistemu Windows).

9. korak: Dodajanje združljivosti skriptov v sistem Windows

Dodajanje združljivosti skriptov v sistem Windows
Dodajanje združljivosti skriptov v sistem Windows

Skript, kot je bil doslej napisan, učinkovito odstrani sledi v operacijskih sistemih Unix. Za delovanje v sistemu Windows je potreben en manjši dodatek. Za razliko od Mac in drugih operacijskih sistemov, ki temeljijo na Unixu, Windows ne podpira koncepta enotnega korenskega imenika. Zato se vsa imena poti začnejo z nosilcem (C: ali E: ali katero koli drugo črko, na katero pomislite), v nasprotju s korenskim imenikom (/). Na srečo ima Perl posebno spremenljivko, $O (to je veliko o, ne nič), ki nam pove, kateri operacijski sistem trenutno uporabljamo. Torej, če vrednost, shranjena v tej spremenljivki, vsebuje "Win", bomo želeli odstraniti vodilno poševnico na naši datotečni poti lokacije XML. To lahko storite z naslednjo vrstico kode (dodano, potem ko smo uspešno razčlenili lokacijo sledi iz datoteke XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) če je $^O = ~ /Win /i;Zdaj bo skript deloval, ne glede na to, ali se izvaja v OS X ali Windows.

10. korak: Dokončan skript

Dokončan scenarij
Dokončan scenarij

V prilogi je moja različica dokončanega skripta za samodejno brisanje iTunes, za tiste, ki ste želeli le končni izdelek in ne razlage o tem, kako deluje.

Če želite uporabiti skript, ga boste želeli shraniti kot datoteko perl (razširitev.pl) in jo nato narediti izvedljivo (chmod 751 v Unixu, ne vem, kaj je za sisteme Windows).

Priporočena: