Turinys:

Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio: 10 žingsnių
Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio: 10 žingsnių

Video: Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio: 10 žingsnių

Video: Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio: 10 žingsnių
Video: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, Liepa
Anonim
Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio
Ištrinkite nepageidaujamas „iTunes“dainas iš savo kompiuterio

Sveiki, ponios ir ponai, tai yra mano pirmasis nurodomas kodavimas, todėl komentuodami palikite ginklus namuose (tačiau peiliai yra priimtini). Atsiradus mp3 grotuvams, žmonės galėjo nešiotis precedento neturinčias sumas. muzikos su jais kišenėse. Neretai tenka girdėti, kad žmonės turi 5, 10, net 15 tūkstančių dainų (o kai kurie žmonės - net daugiau). Iš mp3 grotuvų nė vienas nėra populiaresnis už „Apple“„iPod“ir jį valdančią programinę įrangą „iTunes“. Tačiau esant tokioms didelėms muzikos bibliotekoms gali būti šiek tiek nuobodu atsikratyti dainų, kurios tiesiog neskamba gerai ar nepatinka tu jau. Gali praeiti daug metų, kad galėtumėte sekti takelį per savo muzikos kolekciją „iTunes“ir atsikratyti dainų, kurios jums nepatinka. Štai kur yra šis pamokomas dalykas. Šioje pamokoje parodysiu būdą, kaip automatiškai atsikratyti dainų tai tiesiog baisu, padedama mano gero draugo Perlo. Geros pagrindinės „Perl“žinios yra labai naudingos bandant pakartoti šią pamokomą, nors ir neprivalomą (tikrai galite tiesiog paimti gatavą kodo produktą ir nukopijuoti/įklijuoti) ir jis veiks gerai). Tiems, kurie domisi „Perl“, labai rekomenduoju „O'Reilly“knygą „Learning Perl“, tai yra geras skaitymas ir viena geriausių parašytų knygų apie „Perl“, kurią teko skaityti. SVARBU: Nors čia pateikti metodai veiks jei tai padarysite teisingai, aš negaliu ir tiesiog neprisiimsiu jokios atsakomybės, jei padarysite ką nors kvailo ir ištrinsite savo brangias dainas. Prieš bandydami rašyti ar vykdyti scenarijų, pvz., Toliau pateiktą, labai apsvarstykite galimybę sukurti savo muzikos failų atsargines kopijas. Tiesiog klyskite atsargiai, kad nesužeistume jausmų, jei to nepadarysite, ačiū. Ar perskaitėte įspėjimą? (Taip, net jūs, perspėjimo neskaitęs žmogus) Puiku! Pradėkime:-) Atnaujinimas: atrodo, kad kai kurie perl scenarijai sunkiai dirbo rašant „iTunes“scenarijus. Norėdami rasti įvairių su „iTunes“susijusių scenarijų, peržiūrėkite „Teridon“scenarijus.

1 žingsnis: Darbo pradžia

Darbo pradžia
Darbo pradžia

Kaip ir visi dalykai, prieš pradedant vykdyti šį scenarijų, reikia šiek tiek pasiruošti. Taigi, dalykus, kuriuos jums reikės automatiškai ištrinti dainas iš „iTunes“: 1) kompiuteris (duh) 2) „iTunes“(dvigubas duh) 3) „Perl“(ar sunku sakyti, kad „Perl“scenarijų paleisti be „Perl“?) 4) mėgstamiausias redaktorius (aš pats esu „vi“ir „vim“šalininkas, bet bet kuris teksto redaktorius turėtų tai padaryti) čia pateiktos instrukcijos turėtų būti pakankamai paprastos: https://www.perl.com/download.csp Kai „Perl“atsisiųsite, įdiegsite ir būsite pasiruošę, norėsime informacijos apie tai, ką mes darome. Reikėtų pažymėti, kad scenarijus iš pradžių buvo sukurtas „Mac OS X“, nors tie patys metodai turėtų veikti ir ne „Unix“pagrįstose OS, pvz., „Windows“. Laikas nuobodžiai, er, „edukacinei“„Instructable“daliai.

2 žingsnis: pagrindinė scenarijaus idėja

„iTunes“turi 5 žvaigždučių įvertinimo sistemą, leidžiančią vartotojams įvertinti dainas. Dainos, turinčios 5 žvaigždučių įvertinimą, laikomos geriausiomis, o dainos, turinčios 1 žvaigždutės įvertinimą, laikomos blogiausiomis. Mūsų tikslais manysime, kad bet kuri daina, neturinti įvertinimo (dar žinoma kaip 0 žvaigždžių), yra tokia, kurios vartotojas dar neturėjo galimybės įvertinti. Asmeniškai, vertindamas dainas, jei daina turi 1 žvaigždutės įvertinimą, aš manau, kad tai yra pakankamai blogai, kad ji nenusipelno brangios vietos, kurią užima daina. Todėl „Perl“scenarijus, kurį jums pristatysiu šioje instrukcijoje, bus išanalizuotas per „iTunes“biblioteką ir ištrins bet kokį takelį, kuriam suteiktas 1 žvaigždutės įvertinimas. Kaip papildoma premija, dainos gali būti įvertintos, kai vartotojas yra kelyje naudojant „iPod“. Tokiu būdu galite pasirinkti dainas, kurias norite ištrinti keliaudami, tiesiog jas įvertindami, ir jos bus automatiškai ištrintos, kai vėliau sinchronizuosite „iPod“su kompiuteriu (jei automatiškai sinchronizuosite „iPod“su kompiuteriu). Dabar žinome, ką pažiūrėkime, kaip iš „iTunes“ištrauksime informaciją apie dainas „Perl Script“.

3 žingsnis: XML biblioteka: „iTunes“„Goto Guy“

XML biblioteka: „iTunes“„Goto Guy“
XML biblioteka: „iTunes“„Goto Guy“

Norėdami ištrinti dainą iš kompiuterio pagal jos įvertinimą, mums reikia 2 informacijos: dainos įvertinimo ir dainos vietos. Laimei, mums yra patogus failas, iš kurio galime gauti visą informaciją, kurios kada nors norėjome apie „iTunes“: iš „iTunes Music Library XML“failo. XML failas vadinamas „iTunes Music Library.xml“ir turėtų būti pagrindinio kietojo disko muzikos kataloge.

Apie XML failą: „iTunes“xml failas yra tam tikra duomenų bazė, kurią tvarko „iTunes“ir visada atnaujinama. Kai pakeitimai atliekami „iTunes“, atitinkama „iTunes XML“failo dalis modifikuojama, kad būtų pastebėtas šis pakeitimas. Įrašo pavyzdys iš mano „iTunes“XML failo pateikiamas žemiau: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedNuolatinis ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20. Re įvestis. XML failą sudaro reikšmės, apsuptos HTML stiliaus žymomis. Scenarijaus tikslais mums bus įdomūs informacijos takelio ID, vardas, atlikėjas, įvertinimas ir vieta. Jei žiūrite į XML failą, iš viršaus galite pastebėti, kad šios dainos „įvertinimas“yra 40. „iTunes“kiekvienai dainai priskiria sveiką skaičių nuo 0 iki 100, o kiekvienas 20 taškų yra papildoma įvertinimo žvaigždutė. Taigi įvertinimas 20 atitinka 1 žvaigždutės įvertinimą, 40-2 žvaigždučių įvertinimą ir pan., 100-5 žvaigždučių įvertinimas. Taigi dabar, kai žinome apie XML failą, pradėkime kurti scenarijus

4 veiksmas: jūsų draugas susierzina (net jei nesate Amsterdame)

Jūsų draugas užblokuotas (net jei nesate Amsterdame)
Jūsų draugas užblokuotas (net jei nesate Amsterdame)

Kad galėtume pašalinti failus, mums reikia veikiančios duomenų bazės, kuri susietų visą dainos informaciją. Nors gali būti naudojamos sudėtingesnės duomenų struktūros, pvz., Maišų masė arba maišos maišos, šis scenarijus yra pakankamai paprastas, kad būtų galima naudoti paprastą maišų sąrašą. Nežinantiems maiša yra ne kas kita, kaip masyvas, yra indeksuojamas eilutėmis arba sumaišyta raktų/verčių porų masė. Galima galvoti apie maišą kaip apie didelę statinę, kurioje yra daiktų (vertybių), ir viskas, kas yra metaforinėje statinėje, pritvirtinta su etikete (raktais). Galite ištraukti bet kurį statinės elementą tiesiog suradę jo žymą. Norėdami gauti daugiau informacijos apie maišas, gali būti naudinga ši nuoroda: https://www.tutorialspoint.com/perl/perl_hashes.htm Mes galime naudoti informaciją, kad kiekvienai dainai iTunes XML faile yra priskirtas unikalus takelio ID, kad galėtume stebėti dainos. Dėl šios priežasties „trackID“yra idealus maišos raktas. Todėl galime nustatyti 4 maišas pagal dainos pavadinimą, atlikėją, įvertinimą ir vietą. Kai jie bus nustatyti, galime nuskaityti failą ir užpildyti maišos duomenų bazę naudodami keletą paprastų reguliariųjų išraiškų, kurios bus parodytos toliau.

5 žingsnis: (labai) trumpa reguliariųjų išraiškų pamoka

Norėdami paimti maišos įrašus iš XML failo ir taip pat sutaupyti šiek tiek laiko paieškai, norėsime pasitelkti vieną iš galingesnių „Perl“funkcijų - reguliariąją išraišką. Aš atliksiu labai trumpą pamoką apie reguliarias išraiškas, tačiau tiems, kurie nori išsamesnių paaiškinimų, internete yra daug gerų reguliariosios išraiškos pamokų. Apsilankykite https://perldoc.perl.org/perlretut.html, kad gautumėte gerą reguliarios išraiškos pamoką. Trumpai tariant, įprastos išraiškos suteikia mums įrankių rinkinį, kad galėtume pereiti eilutes, pakeisti vieną eilutę kita eilute arba išsaugoti dalis eilutė vėlesniam naudojimui. Reguliarios išraiškos suteikia 2 funkcijas - atitikimo (m //) ir pakeitimo (-ų) operatorių, kurie bus naudojami šiam projektui. Norėdami naudoti bet kurią iš šių funkcijų priskyrimo kontekste, naudosime „Perl“įrišimo operatorių (= ~), kuris naudojamas modeliui susieti su pasirinktu eilutės kintamuoju. Pavyzdžiai:

$ komentaras = ~ /Purduecer /; #grįžta tiesa, jei $ komentaro eilutėje yra frazė „Purduecer“s/[a-z]/[A-Z]/; #įrašykite visas mažąsias raides eilutėmis ir didžiosiomis raidėmis rašykite $ _ eilutęAntrasis naudingas reguliariųjų išraiškų bruožas yra atminties kintamieji. Į įprastas išraiškas galite įdėti tam tikrus elementus skliausteliuose, o tada naudoti specialius modelio atitikties atminties kintamuosius $ 1, $ 2 ir tt, kad vėliau pasiektumėte šias dalis atitinkančių eilučių dalis.

/(Instructables) Robotas/; #Suderinkite bet kurią eilutę su fraze „Instructables Robot“$ website = $ 1; #Išsaugoti sėkmingo modelio atitikties rezultatą, esantį pirmajame rinkinyje #(šiuo atveju kintamajame $ 1 yra „Instructables“)Galiausiai, įprastose išraiškose yra tam tikrų simbolių, kurie tarnauja tam tikram tikslui. Tai pabėgimo brūkšnys (visa tai turėtų atrodyti pažįstama C programuotojams), simbolių klasės ir metaženkliai. Pavyzdžiui, kad atitiktų bet kurią raidę, kurios abiejose pusėse yra skirtukas, galime pasakyti

/\ t [a-zA-Z] t/Šie laužtiniai skliausteliai naudojami įprastose išraiškose simbolių klasei apibrėžti. Tačiau tarkime, kad norėjome rasti eilutėje laužtiniuose skliaustuose esančio teksto. Mes negalėjome tiesiog parašyti taip, kaip yra, kaip parodyta žemiau

/

/

6 veiksmas: reguliariųjų išraiškų taikymas „ITunes“scenarijui

Reguliariųjų išraiškų taikymas „ITunes“scenarijui
Reguliariųjų išraiškų taikymas „ITunes“scenarijui

Dabar, kai tikimės, kad turime tam tikrų supratimų apie pagrindines sąvokas, įjungiančias reguliarias išraiškas, atėjo laikas jas pritaikyti „iTunes“scenarijui. Skaitant xml kodą, tam tikri simboliai, pvz., Priekinis brūkšnys, sutinkami gana dažnai. Todėl mes pasinaudosime tuo, kad m // operatorius leis jums pasirinkti bet kokius norimus skirstytuvus kode (mes naudosime laužtinius skliaustus, nors kiti ribotuvai tikrai veiks) Pirmiausia turime perskaityti tik dalį visą „iTunes XML“failą. Failo dalys, kuriose yra informacijos, pvz., Grojaraščiai ir pan., Nėra būtinos. Pirmoji grojaraščių skyriaus eilutė, esanti po dainos informacijos, atrodo taip: Grojaraščiai Todėl per tam tikrą ciklą galime pridėti teiginį, kuris pereina į failo skaitymo pabaigą, jei susiduriama su šia eilute.

while () {#loop_instructions_here paskutinė, jei ($ _ = ~ m [Grojaraščiai])}Be to, norėdami sukurti maišos ID, galime naudoti medį if-elsif, kad sukurtume savo duomenų bazės maišas, naudodami atminties atitikties kintamuosius, apie kuriuos sužinojome ankstesniame žingsnyje, kad išsaugotume reikšmes į maišas

jei ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Įvertinimas (d+)]) {$ rate_hash {$ id} = 1 USD; } elsif ($ _ = ~ m [Vardas (.+)]) {$ name_hash {$ id} = 1 USD; } elsif ($ _ = ~ m [Atlikėjas (.+)]) {$ art_hash {$ id} = 1 USD; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Dabar, kai sukūrėme maišos duomenų bazės pagrindą, aptarsime 1 žvaigždutės failų paiešką ir pašalinimą, todėl pereikite prie kito žingsnio!

7 veiksmas: suraskite ir ištrinkite tuos 1 žvaigždutės takelius

Šių 1 žvaigždžių takelių radimas ir ištrynimas
Šių 1 žvaigždžių takelių radimas ir ištrynimas

Dabar, kai turime savo duomenų bazę, atėjo laikas ieškoti 1 žvaigždutės takelių, kad galėtume juos ištrinti. „Perl“pateikia naudingą kilpinę konstrukciją, vadinamą „foreach loop“, kurią galima naudoti kartojant visus mūsų maišos raktus. Reikėtų pažymėti, kad ne kiekvienas „iTunes“bibliotekos takelis turės įrašą reitingų maišoje. Taip yra todėl, kad dainos, neturinčios reitingo, iTunes XML faile neturi takelio įvertinimo eilutės. Todėl, atlikdami maišos maišą, norėsime naudoti šią konstrukciją:

foreach $ id (rūšiavimo raktai %rate_hash) { #… įterpkite čia kilpos kodą}Po to viskas taip paprasta, kaip naudoti šį teiginį

atsieti $ loc_hash {$ id}, jei $ rate_hash {$ id} == 20;Aukščiau esančiame pavyzdiniame kode naudojama atsiejimo funkcija yra „Perl“būdas ištrinti failus. Jums gali kilti pagunda naudoti sistemos iškvietimą operacinės sistemos ištrynimo funkcijai, tačiau dėl perkeliamumo mano parašytas kodas nenaudoja sistemos skambučio. Dabar mes turime pagrindinę kodo struktūrą. Atlikdami šiuos veiksmus, mes šiek tiek patobulinsime kodą, kad galėtumėte turėti pilnavertį, funkcionalų scenarijų, kad atsikratytumėte tų baisių 1 žvaigždžių.

8 žingsnis: URI pabėgimas ir kaip juos apeiti

Jei bandysite paleisti scenarijų tokį, koks yra, susidursite su daugybe operacinės sistemos klaidų, o pažvelgę į failų kelius, kuriuos bandote ištrinti, keliuose galite rasti neįprastų simbolių, kurie yra nepageidaujami. Yra gana didelė tikimybė, kad šiuose keliuose yra URI pabėgimo simbolių. Kas yra URI pabėgimas? HTML ir XML, URI pabėgimo simboliai (dar žinomi kaip URI pabėgimai) yra specialūs metaženkliai, naudojami ieškant pažodinių to simbolio atvejų. Pvz., Niekada nematysite paprasto tarpo XML simbolių eilutėje. Tačiau pamatysite paprasto tarpo XML vaizdą, %20. (Tikrai matėte juos naršyklės URL juostoje ir pagalvojote, kas tai yra. Na, dabar žinote) URI pabėgimą sudaro % ženklas, po kurio eina 2 skaitmenų šešioliktainis kodas, simbolizuojantis simbolio ASCII vertę. taške, vietovės maišoje galite parašyti visą krūvą pakeitimo teiginių, kad pakeistumėte visus įmanomus metaženklius, su kuriais susiduriate (ty $ loc_hash {$ id} = ~ s/%20//ir pan.). Laimei, „Perl“suteikia geresnį būdą pasirūpinti šiais dalykais. „Perl“komplektuojamas su moduliu, vadinamu URI:: Escape, turinčiu integruotą funkciją uri_unescape, kuri mums padės pašalinti URI pabėgimus. Norėdami naudoti modulį, tiesiog pridėkite šią eilutę kodo viršuje:

naudoti URI:: Escape;Dabar, XML failų cikle priskyrę masyvą $ loc_hash {$ id}, vėliau galime pridėti šią eilutę

uri_unescape ($ loc_hash {$ id});Aukščiau pateikta eilutė automatiškai pašalina visus URI pabėgimo simbolius. Kaip papildoma premija ji taip pat verčia kai kuriuos tarptautinius simbolius. Paleidau scenarijų su keliais failų keliais, kuriuose buvo japonų konji, o funkcija uri_unescape išvertė tų simbolių XML formatus į originalius simbolius, kad atsiejimas galėtų sėkmingai ištrinti failą. Prieš pereinant, reikia atlikti vieną papildomą veiksmą. Dėl priežasčių, kurių iki galo nesuprantu, „iTunes“koduoja „&“simbolį „&“eilutėse. Jei kas nors žino, kodėl taip yra, praneškite man. Tuo tarpu mes pašaliname šią problemą pridėdami šią eilutę po eilute uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;Dabar scenarijus neturės keistų simbolių failų takų, o atsiejimo funkcija galės rasti failus tinkamose vietose, kad juos ištrintų. Na, tai bus, jei naudojate „Mac OSX“(ir tikriausiai daugumą kitų „Unix“OS). Skaitykite toliau, kad scenarijus būtų suderinamas su kitomis operacinėmis sistemomis (būtent „Windows“).

9 veiksmas: pridėkite scenarijų suderinamumą prie „Windows“

Scenarijų suderinamumo pridėjimas prie „Windows“
Scenarijų suderinamumo pridėjimas prie „Windows“

Scenarijus, kaip parašyta iki šiol, efektyviai pašalina „Unix“operacinių sistemų takelius. Kad jis veiktų „Windows“, reikalingas vienas nedidelis papildymas. Skirtingai nuo „Mac“ir kitų „Unix“OS, „Windows“nepalaiko vieno šakninio katalogo koncepcijos. Todėl visi kelio pavadinimai prasideda apimtimi (C: arba E: arba bet kokia kita raidė, kurią galite pagalvoti), o ne šakninis katalogas (/). Laimei, „Perl“turi specialų kintamąjį, $O (tai yra didysis o, o ne nulis), kuris nurodo, kokią operacinę sistemą šiuo metu naudojame. Taigi, jei tame kintamajame išsaugotoje vertėje yra „Laimėti“, norime pašalinti pirmąjį brūkšnį mūsų XML vietos failo kelyje. Tai galima padaryti naudojant šią kodo eilutę (pridėta po to, kai sėkmingai išanalizavome takelio vietą iš XML failo):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1), jei $^O = ~ /Win /i;Dabar scenarijus veiks, nesvarbu, ar jis paleistas „OS X“, ar „Windows“.

10 žingsnis: Užbaigtas scenarijus

Užbaigtas scenarijus
Užbaigtas scenarijus

Pridedama mano baigto „iTunes“automatinio pašalinimo scenarijaus versija tiems, kurie tik norėjo galutinio produkto, o ne paaiškinimo, kaip jis veikia.

Jei norite naudoti scenarijų, norėsite išsaugoti failą kaip „perl“failą (plėtinį.pl) ir padaryti jį vykdomu („chmod 751“Unix sistemoje, nežinote, kas tai yra „Windows“sistemoms).

Rekomenduojamas: