Sisällysluettelo:

Poista ei -toivotut ITunes -kappaleet tietokoneesta: 10 vaihetta
Poista ei -toivotut ITunes -kappaleet tietokoneesta: 10 vaihetta

Video: Poista ei -toivotut ITunes -kappaleet tietokoneesta: 10 vaihetta

Video: Poista ei -toivotut ITunes -kappaleet tietokoneesta: 10 vaihetta
Video: Näin tyhjennät tietokoneen ja poistat valmistajan asentamat ylimääräiset ohjelmat 2024, Heinäkuu
Anonim
Poista ei -toivotut ITunes -kappaleet tietokoneeltasi
Poista ei -toivotut ITunes -kappaleet tietokoneeltasi

Hei hyvät naiset ja herrat, tämä on ensimmäinen opettavainen koodaukseni, joten jättäkää aseet kotiin kommentoidessanne (veitset ovat kuitenkin hyväksyttäviä). Mp3 -soittimien myötä ihmiset ovat voineet kantaa ennennäkemättömiä määriä musiikkia ympärillään heidän taskussaan. Ei ole harvinaista kuulla ihmisistä, joiden kokoelmat ovat 5, 10, jopa 15 tuhatta kappaletta (ja jotkut ihmiset jopa enemmän). Mikään mp3 -soittimista ei ole suositumpi kuin Applen iPod ja sitä käyttävä ohjelmisto iTunes. Tällaisten suurten musiikkikirjastojen kanssa voi kuitenkin tulla hieman tylsää päästä eroon kappaleista, jotka eivät yksinkertaisesti kuulosta hyviltä tai houkuttelevilta. sinä enää. Se voi kestää vuosia, ennen kuin voit seurata kappaleita kappaleittain iTunes -musiikkikokoelmasi läpi ja päästä eroon kappaleista, joista et pidä. Tässä kohtaa tämä ohje löytyy. Tässä ohjeessa näytän sinulle tavan päästä eroon kappaleista automaattisesti jotka ovat yksinkertaisesti aivan kauheita hyvän ystäväni Perlin avustuksella. hyvä Perlin tuntemus on erittäin hyödyllinen yritettäessä toistaa tämä ohjeellinen, vaikkakaan ei pakollinen (voisit varmasti ottaa lopullisen koodituotteen ja kopioida/liittää ja se toimii hyvin). Niille, jotka ovat kiinnostuneita Perlistä, suosittelen lämpimästi O'Reillyn kirjaa "Learning Perl", se on hyvää luettavaa ja yksi Perlin parhaista kirjoitetuista kirjoista, joita minulla on ollut mahdollisuus lukea. TÄRKEÄÄ: Vaikka tässä esitetyt menetelmät toimivat jos se tehdään oikein, en voi enkä yksinkertaisesti ota mitään vastuuta, jos teet jotain tyhmää ja poistat arvokkaita kappaleitasi. Harkitse vahvasti musiikkitiedostojesi varmuuskopiointia ennen kuin yrität kirjoittaa tai suorittaa seuraavan kaltaisen komentosarjan. Vain erehdy varovaisuuden vuoksi, jotta emme loukkaa tunteitasi, jos et, kiitos. Lue varoitus? (Kyllä, jopa sinä, henkilö, joka ei lukenut varoitusta) Hienoa! Aloitetaan:-) Päivitys: Näyttää siltä, että jotkut perl-skriptit ovat olleet kovasti töissä iTunes-skriptien kirjoittamisessa. Jos haluat tutustua erilaisiin iTunesiin liittyviin skripteihin, tutustu Teridonin komentosarjoihin.

Vaihe 1: Aloittaminen

Päästä alkuun
Päästä alkuun

Kuten kaikki asiat, on tehtävä pieni valmistelu, ennen kuin voimme suorittaa tämän komentosarjan. Joten asioita, jotka sinun on poistettava kappaleet automaattisesti iTunesista: 1) tietokone (duh) 2) iTunes (double duh) 3) Perl (vaikea sanoa Perl -skriptiä ilman Perliä, eikö niin?) 4) suosikkieditori (olen itse vi ja vim: n kannattaja, mutta minkä tahansa tekstieditorin pitäisi tehdä temppu) 5) iPod (ei pakollinen, mutta mukava saada syistä, jotka selvennetään pian) ohjeiden pitäisi olla riittävän yksinkertaisia: https://www.perl.com/download.csp Kun olet ladannut, asentanut ja valmis aloittamaan Perlin käytön, haluamme taustatietoja siitä, mitä teemme. On huomattava, että käsikirjoitus on alun perin kehitetty Mac OS X -käyttöjärjestelmää varten, vaikka samojen menetelmien pitäisi toimia muilla kuin Unix-pohjaisilla käyttöjärjestelmillä, kuten Windows. Aika Instructable -ohjelman tylsälle, "opettavaiselle" osalle.

Vaihe 2: Perusskripti -idea

iTunesissa on 5 tähden luokitusjärjestelmä, jonka avulla käyttäjät voivat arvioida kappaleita. Kappaleita, joilla on 5 tähden luokitus, pidetään parhaina kappaleina, kun taas 1 tähden luokitelluilla kappaleilla oletetaan olevan pahimpia kappaleita. Tarkoituksessamme oletamme, että mikä tahansa kappale, jolla ei ole luokitusta (eli 0 tähteä), on sellainen, jota käyttäjä ei ole vielä voinut arvioida. se on todennäköisesti tarpeeksi huono, ettei se ansaitse sitä arvokasta kiintolevytilaa, jonka kappale vie. Siksi tässä Instructable-ohjelmassa esittelemäni Perl-skripti jäsentää iTunes-kirjaston ja poistaa kaikki kappaleet, joille on annettu 1 tähden luokitus. Lisäbonuksena kappaleita voidaan arvioida käyttäjän ollessa liikkeellä käyttämällä iPodia. Tällä tavalla voit valita poistettavia kappaleita liikkeellä ollessasi yksinkertaisesti arvioimalla ne, ja ne poistetaan automaattisesti, kun synkronoit iPodin tietokoneeseen myöhemmin (jos synkronoit iPodin automaattisesti tietokoneeseen). Katsotaanpa, miten aiomme noutaa kappaleiden tiedot iTunesista Perl -skriptille.

Vaihe 3: XML -kirjasto: ITunesin Goto Guy

XML -kirjasto: ITunesin Goto Guy
XML -kirjasto: ITunesin Goto Guy

Jotta voimme poistaa kappaleen tietokoneelta sen luokituksen perusteella, tarvitsemme kaksi tietoa: kappaleen luokituksen ja kappaleen sijainnin. Onneksi meille on kätevä tiedosto, josta voimme saada kaikki iTunesista halutut tiedot: iTunes Music Library XML -tiedostosta. XML -tiedoston nimi on "iTunes Music Library.xml", ja sen pitäisi sijaita kiintolevyn musiikkihakemistossa.

Tietoja XML -tiedostosta: iTunes xml -tiedosto on eräänlainen iTunesin ylläpitämä tietokanta, joka pidetään aina ajan tasalla. Kun muutoksia tehdään iTunesissa, iTunes XML -tiedoston vastaava osa muutetaan tämän muutoksen huomioimiseksi. Esimerkki iTunes XML-tiedostostani: 1218Track ID1218NameTake On MeArtistA-HaGenre 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPistentent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20Monest, joka näkyy XML-tiedosto koostuu arvoista, joita ympäröivät HTML-tyyliset tunnisteet. Käsikirjoitusta varten meitä kiinnostaa kappaleen tunnus, nimi, esittäjä, luokitus ja sijainti. Jos katsot XML -tiedostoa, saatat huomata ylhäältä, että tämän kappaleen "luokitus" on 40. iTunes määrittää jokaiselle kappaleelle kokonaisluvun, joka vaihtelee 0: sta 100: een, ja jokainen 20 pistettä on luokituksen lisätähti. Joten luokitus 20 vastaa 1 tähden luokitusta, 40 on 2 tähden luokitus ja niin edelleen, 100 on 5 tähden luokitus. Joten nyt kun tiedämme XML -tiedoston, aloitetaan komentosarja

Vaihe 4: Ystäväsi hässäkkä (vaikka et olisikaan Amsterdamissa)

Ystäväsi hässäkkä (vaikka et olisikaan Amsterdamissa)
Ystäväsi hässäkkä (vaikka et olisikaan Amsterdamissa)

Ennen kuin voimme poistaa tiedostoja, tarvitsemme toimivan tietokannan, joka yhdistää kaikki kappaleen tiedot yhteen. Vaikka voidaan käyttää kehittyneempiä tietorakenteita, kuten hajautusryhmää tai tiivisteiden tiivisteitä, tämä komentosarja on riittävän yksinkertainen ansaitakseen käyttää yksinkertaista tiivisteiden luetteloa. on indeksoitu merkkijonoilla tai sekava massa avain/arvo -pareja. Hashia voidaan ajatella suurena tynnyrinä, jossa on tavaraa (arvot), ja kaikessa vertauskuvallisessa tynnyrissä on tunniste (avaimet). Voit vetää minkä tahansa esineen tynnyristä yksinkertaisesti etsimällä sen tunnisteen. Lisätietoja tiivisteistä saat seuraavasta linkistä: https://www.tutorialspoint.com/perl/perl_hashes.htmVoimme käyttää tietoja siitä, että jokaiselle iTunes XML -tiedoston kappaleelle on annettu yksilöllinen kappaletunnus seurataksesi laulut. Tästä syystä trackID on ihanteellinen avain hajautuksiin. Siksi voimme määrittää 4 tiivistettä kappaleen nimelle, esittäjälle, luokitukselle ja sijainnille. Kun nämä on määritetty, voimme skannata tiedoston ja täyttää tiivistetietokantamme käyttämällä yksinkertaisia säännöllisiä lausekkeita, jotka näytetään seuraavassa.

Vaihe 5: (Erittäin) lyhyt oppitunti säännöllisistä lausekkeista

Jotta voimme hakea hajautusmerkintöjämme XML -tiedostosta ja säästää myös aikaa etsinnässä, haluamme pyytää apua joltakin Perlin tehokkaammilta ominaisuuksilta: säännölliseltä lausekkeelta. Teen lyhyen oppitunnin säännöllisistä lausekkeista, mutta niille teistä, jotka haluavat yksityiskohtaisempia selityksiä, verkossa on paljon hyviä säännöllisen lausekkeen opetusohjelmia. Katso hyvä säännöllisen lausekkeen opetusohjelma osoitteesta https://perldoc.perl.org/perlretut.html. Lyhyesti sanottuna säännölliset lausekkeet tarjoavat meille joukon työkaluja merkkijonojen läpikäymiseen, yhden merkkijonon korvaamiseen toisella merkkijonolla tai osien tallentamisesta merkkijono myöhempää käyttöä varten. Säännölliset lausekkeet tarjoavat kaksi toimintoa, täsmäytys (m //) ja korvaavat (s //) operaattorit, joita aiotaan käyttää tässä projektissa. Jos haluat käyttää jompaakumpaa näistä toiminnoista määrityskontekstissa, käytämme Perlin sidontaoperaattoria (= ~), jota käytetään sitomaan kuvio haluamaasi merkkijonomuuttujaan.

$ kommentti = ~ /Purduecer /; #palaa totta, jos $ -kommenttimerkkijono sisältää lauseen "Purduecer" s/[a-z]/[A-Z]/; #ota kaikki pienet kirjaimet merkkijonoon ja käytä isoja kirjaimia $ _ merkkijonossaSäännöllisten lausekkeiden toinen hyödyllinen ominaisuus on muistimuuttujien ominaisuus. Säännöllisissä lausekkeissa voit sijoittaa tiettyjä kohteita sulkeisiin ja käyttää sitten erityisiä kuviohaun muistimuuttujia $ 1, $ 2 jne. Käyttääksesi näitä osia vastaavia merkkijonoja myöhemmin.

/(Ohjattavat) Robotti/; #Aseta mikä tahansa rivi ilmaukseen "Instructables Robot" $ website = $ 1; #Tallenna tulos onnistuneesta kuviohausta, joka sisältyy ensimmäiseen sarjaan #(tässä tapauksessa muuttuja $ 1 sisältää "Instructables")Lopuksi, säännöllisissä lausekkeissa on tiettyjä merkkejä, jotka palvelevat erityistä tarkoitusta. Nämä ovat käänteisviivoja (joiden kaikkien pitäisi näyttää tutuilta C -ohjelmoijille), hahmoluokkia ja metamerkkejä. Voisimme esimerkiksi sanoa, että jos haluat vastata mitä tahansa yksittäistä kirjainta, jonka molemmilla puolilla on välilehti

/\ t [a-zA-Z] t/Näitä hakasulkeita käytetään säännöllisissä lausekkeissa merkkiluokan määrittämiseen. Oletetaan kuitenkin, että halusimme löytää tekstin hakasulkeista riviltä. Emme voineet kirjoittaa sitä sellaisenaan, kuten alla on esitetty

/

/

Vaihe 6: Säännöllisten lausekkeiden käyttäminen iTunes -komentosarjassa

Säännöllisten lausekkeiden käyttäminen ITunes -komentosarjassa
Säännöllisten lausekkeiden käyttäminen ITunes -komentosarjassa

Nyt kun toivomme, että meillä on jonkin verran aavistusta säännöllisten lausekkeiden käynnistämistä koskevista peruskäsitteistä, on aika soveltaa niitä iTunes -komentosarjaan. XML -koodia luettaessa tiettyjä merkkejä, kuten vinoviivaa, esiintyy melko usein. Siksi hyödynnämme sitä tosiasiaa, että m // -operaattori antaa sinun valita koodista haluamasi erottimet (käytämme hakasulkeita, vaikka muut erotimet varmasti toimivat) Ensinnäkin meidän on luettava vain osa koko iTunes XML -tiedosto. Tiedoston osat, jotka sisältävät tietoja, kuten soittolistat jne., Eivät ole välttämättömiä. Soittolistat -osion ensimmäinen rivi, joka tulee kappaletietojen jälkeen, näyttää tältä: Soittolistat Siksi voimme hetken silmukassa lisätä lausekkeen, joka hyppää tiedoston lukemisen loppuun, jos kyseinen rivi havaitaan.

while () {#loop_instructions_here last if if ($ _ = ~ m [Playlists])}Seuraavaksi, rakentaaksesi hajautustunnukset, voimme rakentaa tietokannan tiivisteet if-elsif-puun avulla käyttämällä muistivastaavuuden muuttujia, joista saimme tietää edellisessä vaiheessa, arvojen tallentamiseksi hajautuksiin

jos ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Luokitus (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Nimi (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artist (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Nyt kun olemme rakentaneet hash-tietokannamme perustan, käsittelemme yhden tähden tiedostojen paikantamista ja poistamista, joten siirrymme seuraavaan vaiheeseen!

Vaihe 7: Yhden tähden kappaleiden paikantaminen ja poistaminen

Näiden 1 tähden kappaleiden paikantaminen ja poistaminen
Näiden 1 tähden kappaleiden paikantaminen ja poistaminen

Nyt kun tietokanta on luotu, on aika metsästää 1 tähden kappaleita, jotta voimme poistaa ne. Perl tarjoaa hyödyllisen silmukkarakenteen, jota kutsutaan foreach -silmukoksi ja jota voidaan käyttää toistamaan kaikki tiivisteemme avaimet, ja on huomattava, että kaikissa iTunes -kirjastosi kappaleissa ei ole merkintää luokitushajautuksessa. Tämä johtuu siitä, että kappaleille, joilla ei ole luokitusta, ei ole iTunes XML -tiedoston kappaleen luokitusriviä. Siksi, kun kierrämme hajautusten läpi, haluamme käyttää seuraavaa rakennetta:

foreach $ id (lajittelunäppäimet %rate_hash) { #… lisää silmukointikoodi tähän}Sen jälkeen se on yhtä helppoa kuin käyttää seuraavaa lausetta

poista $ loc_hash {$ id} -linkitys, jos $ rate_hash {$ id} == 20;Yllä olevassa esimerkkikoodissa käytetty linkinpoistotoiminto on Perlin tapa poistaa tiedostoja. Saatat houkutella käyttämään järjestelmäpuhelua käyttöjärjestelmäsi poistotoimintoon, mutta siirrettävyydestä johtuen kirjoittamani koodi ei käytä järjestelmäpuhelua. Seuraavissa vaiheissa teemme joitain parannuksia koodiin, jotta sinulla on monipuolinen, toimiva käsikirjoitus päästä eroon näistä ärsyttävistä 1 tähdistä.

Vaihe 8: URI -pakot ja niiden kiertäminen

Jos yrität suorittaa komentosarjan sellaisenaan, törmäät lukuisiin käyttöjärjestelmän virheisiin, ja jos tarkastelet poistettavia tiedostopolkuja, saatat löytää epätavallisia merkkejä, jotka on upotettu ei -toivottuihin reitteihin. On melko hyvä mahdollisuus, että nämä polut sisältävät URI -pakomerkkejä. HTML: ssä ja XML: ssä URI -pakohahmot (eli URI -escapes) ovat erityisiä metamerkkejä, joita käytetään etsimään kyseisen merkin kirjaimellisia esiintymiä. Et esimerkiksi koskaan näe yksinkertaista välilyöntiä XML -merkkijonossa. Näet kuitenkin yksinkertaisen välilyönnin XML -esityksen, %20. (Olet varmasti nähnyt nämä selaimesi URL-palkissa ja miettinyt, mitä ne olivat. No, nyt tiedät) URI-pako koostuu % -merkistä, jota seuraa 2-numeroinen heksadesimaalikoodi, joka edustaa hahmon ASCII-arvoa. Voit kirjoittaa sijainnin tiivisteeseen koko joukon korvauslausekkeita, jotka korvaavat kaikki mahdolliset kohtaamasi metamerkit (esim. $ loc_hash {$ id} = ~ s/%20//ja niin edelleen). Onneksi Perl tarjoaa kuitenkin paremman tavan hoitaa nämä asiat. Perlin mukana tulee URI:: Escape-moduuli, jossa on sisäänrakennettu toiminto uri_unescape, joka tekee URI-pakotteiden poistamisen puolestamme. Voit käyttää moduulia lisäämällä seuraavan rivin koodin yläosaan:

käytä URI:: Escape;Kun olemme määrittäneet $ loc_hash {$ id} -matriisin XML -tiedostosilmukkaan, voimme lisätä seuraavan rivin jälkeenpäin

uri_unescape ($ loc_hash {$ id});Yllä oleva rivi poistaa automaattisesti kaikki URI -pakomerkit. Lisäbonuksena se kääntää myös joitain kansainvälisiä hahmoja. Suoritin komentosarjaa muutamalla tiedostopolulla, joissa oli japanilainen konji, ja uri_unescape -funktio käänsi näiden merkkien XML -muodot alkuperäisiksi hahmoiksi, jotta linkityksen poistaminen voisi poistaa tiedoston onnistuneesti.. Syistä, joita en täysin ymmärrä, iTunes koodaa & -merkin (&) merkkijonoina. Jos joku tietää miksi näin on, niin kertokaa minulle. Sillä välin poistamme tämän ongelman lisäämällä seuraavan rivin uri_unescape -rivin alle

$ loc_hash {$ id} = ~ s/&#/&/;Nyt komentosarjassa on tiedostopolut, joissa ei ole outoja merkkejä, ja linkityksen poistotoiminto voi löytää tiedostoja oikeista paikoistaan niiden poistamiseksi. Kyllä, jos käytät Mac OSX: ää (ja oletettavasti myös useimpia muita Unix-pohjaisia käyttöjärjestelmiä). Lue, miten voit tehdä komentosarjasta yhteensopivan muiden käyttöjärjestelmien (nimittäin Windowsin) kanssa.

Vaihe 9: Komentosarjan yhteensopivuuden lisääminen Windowsiin

Script -yhteensopivuuden lisääminen Windowsiin
Script -yhteensopivuuden lisääminen Windowsiin

Tähän mennessä kirjoitettu skripti poistaa tehokkaasti raidat Unix-pohjaisista käyttöjärjestelmistä. Jotta se toimisi Windowsissa, tarvitaan yksi pieni lisäys. Toisin kuin Mac ja muut Unix-pohjaiset käyttöjärjestelmät, Windows ei tue yhden juurihakemiston käsitettä. Siksi kaikki polunimet alkavat volyymilla (C: tai E: tai mikä tahansa muu kirjain, jota voit ajatella), toisin kuin juurihakemisto (/). Onneksi Perlillä on erityinen muuttuja, $O (se on iso o, ei nolla), joka kertoo meille, mitä käyttöjärjestelmää käytämme tällä hetkellä. Joten jos kyseiseen muuttujaan tallennettu arvo sisältää "Win", haluamme poistaa XML -sijaintitiedoston johtavan kauttaviivan. Tämä voidaan tehdä seuraavalla koodirivillä (lisätään sen jälkeen, kun olemme onnistuneesti jäsentäneet raidan sijainnin XML -tiedostosta):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) jos $^O = ~ /Win /i;Skripti toimii nyt, onko se ajettu OS X: ssä tai Windowsissa.

Vaihe 10: Valmis skripti

Valmis skripti
Valmis skripti

Liitteenä on minun versioni valmiista iTunesin automaattisesta poistoskriptistä niille teistä, jotka vain halusivat lopputuotteen, ei selitystä siitä, miten se toimii.

Käyttääksesi komentosarjaa haluat tallentaa tiedoston perl -tiedostona (.pl -laajennuksena) ja tehdä siitä sitten suoritettavan (chmod 751 Unixissa, en ole varma, mikä se on Windows -järjestelmille).

Suositeltava: