Sisukord:

Kustutage need soovimatud ITunes'i laulud arvutist: 10 sammu
Kustutage need soovimatud ITunes'i laulud arvutist: 10 sammu

Video: Kustutage need soovimatud ITunes'i laulud arvutist: 10 sammu

Video: Kustutage need soovimatud ITunes'i laulud arvutist: 10 sammu
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Juuli
Anonim
Kustutage need soovimatud ITunes'i laulud arvutist
Kustutage need soovimatud ITunes'i laulud arvutist

Hei, daamid ja härrad, see on minu esimene juhendatav kodeerimine, nii et palun jätke kommenteerides relvad koju (noad on siiski vastuvõetavad). MP3 -mängijate tulekuga on inimestel olnud võimalik enneolematuid koguseid kaasas kanda muusika taskus. Pole haruldane kuulda inimestest, kellel on 5, 10, isegi 15 tuhande laulu kogud (ja mõned inimesed isegi rohkem). MP3 -mängijatest pole ükski populaarsem kui Apple'i iPod ja seda käivitav tarkvara iTunes. Selliste suurte muusikakogude puhul võib aga mõnevõrra tüütuks muutuda lahti lauludest, mis lihtsalt ei kõla hästi või ei meeldi sina enam. Teie iTunes'i muusikakogu kaudu lugude kaupa liikumine ja laulud, mis teile ei meeldi, võib võtta aega. See juhendatav on siin. Selles juhendis näitan teile viisi, kuidas lauludest automaatselt lahti saada mis on lihtsalt kohutavad, koos minu hea sõbra Perli abiga. Perli head põhiteadmised on väga kasulikud, kui proovite seda juhendatavat korrata, kuigi mitte nõutud (võite kindlasti võtta valmis kooditoote ja kopeerida/kleepida see ja see töötab suurepäraselt). Neile, kes on Perli vastu huvitatud, soovitan soojalt raamatut "Learning Perl" O'Reillylt, see on hea lugemine ja üks parimaid Perli kohta kirjutatud raamatuid, mida mul on olnud võimalus lugeda. TÄHTIS: Kuigi siin esitatud meetodid toimivad kui seda õigesti teha, ei saa ma lihtsalt ega võta endale mingit vastutust, kui teete midagi rumalat ja kustutate oma väärtuslikud laulud. Palun kaaluge oma muusikafailide varundamist enne järgmise skripti kirjutamist või käivitamist. Lihtsalt eksige ettevaatlikult, et meil ei tekiks tundeid haiget, kui te seda ei tee, aitäh. Kas loete hoiatust? (Jah, isegi sina, inimene, kes hoiatust ei lugenud) Suurepärane! Alustame:-) Värskendus: tundub, et mõned perli skriptijad on iTunes'i skripte üles kirjutades vaeva näinud. Erinevate iTunesiga seotud skriptide jaoks vaadake Teridoni skripte.

1. samm: alustamine

Alustamine
Alustamine

Nagu kõigi asjade puhul, tuleb ka enne selle skripti käivitamist teha väike ettevalmistus. Niisiis, asjad, mida peate laulude iTunesist automaatselt kustutamiseks tegema: 1) arvuti (duh) 2) iTunes (double duh) 3) Perl (raske oleks Perli skripti ilma Perlita käivitada, kas te ütleksite?) 4) teie lemmiktoimetaja (olen ise vi ja vim pooldaja, kuid iga tekstiredaktor peaks selle triki ära tegema) siin olevad juhised peaksid olema piisavalt lihtsad: https://www.perl.com/download.cspKui olete Perli alla laadinud, installinud ja kasutamiseks valmis, tahame taustteavet selle kohta, mida me teeme. Tuleb märkida, et skript töötati algselt välja Mac OS X jaoks, kuigi samad meetodid peaksid töötama ka mitte-Unix-põhistes operatsioonisüsteemides, nagu Windows. Aeg Instructable igava, erilise, "hariva" osa jaoks.

2. samm: skripti põhiidee

iTunes sisaldab viie tärni hindamissüsteemi, mis võimaldab kasutajatel lugusid hinnata. 5-tärnise reitinguga laule peetakse parimateks lugudeks, 1-tärnise reitinguga lugusid aga peetakse üheks halvimateks lugudeks. Meie eesmärkidel eeldame, et iga lugu, millel puudub hinnang (aka 0 tähte), ei ole kasutajal veel olnud võimalust hinnata. Isiklikult, kui lugusid hinnatakse, on laulul 1-tärnine hinnang, leiavad, et see on ilmselt piisavalt halb, et see ei vääri seda väärtuslikku kõvakettaruumi, mida laul võtab. Seetõttu analüüsib Perli skript, mida ma teile selles juhendis esitan, iTunes'i raamatukogu kaudu ja kustutab kõik lood, millele on antud 1-tärnine hinnang. Lisaboonusena saab lugusid hinnata ka siis, kui kasutaja on liikvel kasutades iPodi. Nii saate liikvel olles valida lugusid kustutamiseks, lihtsalt neid hinnates, ja need kustutatakse automaatselt, kui sünkroonite oma iPodi hiljem arvutiga (kui sünkroonite iPodi automaatselt arvutiga). Nüüd teame, mida teeme, vaatame, kuidas kavatseme Perli skripti jaoks iTunesist lugude teavet hankida.

3. samm: XML -raamatukogu: ITunes 'Goto Guy

XML -raamatukogu: ITunes Goto Guy
XML -raamatukogu: ITunes Goto Guy

Loo kustutamiseks arvutist selle hinnangu alusel vajame kahte teavet: laulu reitingut ja laulu asukohta. Meie õnneks on olemas käepärane fail, kust saame kogu teabe, mida iTunes'i kohta kunagi soovisime: iTunes Music Library XML -failist. XML -faili nimi on "iTunes Music Library.xml" ja see peaks asuma teie peamise kõvaketta muusikataloogis.

Teave XML -faili kohta: iTunes'i xml -fail on omamoodi andmebaas, mida haldab iTunes ja mida hoitakse alati ajakohasena. Kui iTunesis tehakse muudatusi, muudetakse iTunes XML -faili vastavat osa selle muudatuse märkimiseks. Näide minu iTunes'i XML-failist on toodud allpool: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG helifail Suurus3682382Koguaeg 25T01: 26: 58ZRating40Albumi hinnang40Albumihinnang on arvutatudPüsiv ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20MonedMonit XML-fail koosneb väärtustest, mis on ümbritsetud HTML-stiilis siltidega. Stsenaariumi jaoks oleme huvitatud loo ID, nime, esitaja, reitingu ja asukoha teabebittidest. Kui vaatate XML -faili, võite ülalt märgata, et selle laulu "reiting" on 40. iTunes määrab igale loole täisarvu vahemikus 0 kuni 100, kusjuures iga 20 punkti on reitingu lisatäht. Niisiis, hinnang 20 vastab 1 tärni hinnangule, 40 on 2 tärni hinnang ja nii edasi, 100 on 5 tärni hinnang. Nüüd, kui me teame XML -failist, alustame skriptimist

Samm: teie sõber on hädas (isegi kui te pole Amsterdamis)

Teie sõber on hädas (isegi kui te pole Amsterdamis)
Teie sõber on hädas (isegi kui te pole Amsterdamis)

Enne failide eemaldamist vajame töötavat andmebaasi, mis seob kogu laulu teabe kokku. Kuigi võib kasutada keerukamaid andmestruktuure, näiteks räsimärki või räsirässi, on see skript piisavalt lihtne, et vääriks lihtsa räsiloendi kasutamist. Alustamatute jaoks ei ole räsimine midagi enamat kui massiiv, mis on indekseeritud stringide või võtme/väärtuse paaride segamini ajava massiga. Räsist võib mõelda kui suurest tünnist, milles on kraami (väärtused) ja kõigele metafoorses tünnis on silt (võtmed) küljes. Saate tünni mis tahes eseme välja tõmmata, lihtsalt leidke selle silt. Räside kohta lisateabe saamiseks võib abiks olla järgmine link: https://www.tutorialspoint.com/perl/perl_hashes.htmMe saame kasutada teavet, et igale iTunes XML -faili loole on antud kordumatu pala ID laulud. Seetõttu on trackID räside jaoks ideaalne võti. Seetõttu saame laulu pealkirja, esitaja, reitingu ja asukoha jaoks seadistada 4 räsimärki. Kui need on kindlaks tehtud, saame faili skannida ja oma räsiandmebaasi täita, kasutades lihtsaid regulaaravaldisi, mida näidatakse järgmisena.

Samm 5: Regulaaravaldiste lühitund (väga)

Et räsikirjeid XML -failist haarata ja otsinguid veidi säästa, tahame abi paluda ühe Perli võimsama funktsiooni - regulaaravaldise abil. Ma teen väga lühikese õppetunni regulaaravaldiste kohta, kuid neile, kes soovivad üksikasjalikumaid selgitusi, on veebis palju häid regulaaravaldiste õpetusi. Hea regulaaravaldise õpetuse leiate aadressilt https://perldoc.perl.org/perlretut.html. Lühidalt öeldes pakuvad regulaaravaldised meile tööriistade komplekti stringide läbimiseks, ühe stringi asendamiseks teise stringi või osade salvestamiseks string hilisemaks kasutamiseks. Regulaaravaldised pakuvad kahte funktsiooni - sobitus- (m //) ja asendusoperaatoreid, mida selles projektis kasutatakse. Mõlema funktsiooni kasutamiseks määramise kontekstis kasutame Perli sidumisoperaatorit (= ~), mida kasutatakse mustri sidumiseks valitud stringimuutujaga. Näited:

$ kommentaar = ~ /Purduecer /; #tagastab tõe, kui $ kommentaari string sisaldab fraasi "Purduecer" s/[a-z]/[A-Z]/; #võtke kõik väiketähed stringidesse ja kirjutage need suurtähtedega $ _Regulaaravaldiste teine kasulik omadus on mälumuutujate omadus. Regulaaravaldistes saate paigutada teatud üksused sulgudesse ja seejärel kasutada spetsiaalseid mustrivaste mälu muutujaid $ 1, $ 2 jne, et pääseda juurde nendele osadele sobivate stringide osadele hiljem.

/(Instructables) Robot/; #Match mis tahes rida fraasiga "Instructables Robot" $ website = $ 1; #Salvesta eduka mustrivaste tulemus, mis sisaldub esimeses sulgude komplektis (antud juhul sisaldab muutuja $ 1 käsku „Instructables”)Lõpuks on regulaaravaldistes teatud tähemärgid, millel on eriline eesmärk. Need on kaldkriipsuga põgenemised (kõik need peaksid C -programmeerijatele tuttavad tunduma), tegelasklassid ja metamärgid. Näiteks, et sobitada mis tahes üksik täht, mille mõlemal küljel on sakk, võime öelda

/\ t [a-zA-Z] t/Neid nurksulge kasutatakse tähemärgiklassi määratlemiseks regulaaravaldistes. Oletame aga, et soovisime realt leida nurksulgudes suletud teksti. Me ei saanud seda lihtsalt sellisena kirjutada, nagu allpool näidatud

/

/

Samm 6: Regulaaravaldiste rakendamine ITunes'i skriptile

Regulaaravaldiste rakendamine ITunes'i skriptile
Regulaaravaldiste rakendamine ITunes'i skriptile

Nüüd, kui loodetavasti on meil aimdusi regulaaravaldiste põhitõdedest, on aeg neid iTunes'i skriptile rakendada. Xml -koodi lugemisel kohtab teatud märke, näiteks kaldkriipsu, üsna sageli. Seetõttu kasutame ära asjaolu, et operaator m // valib koodis soovitud eraldajad (kasutame nurksulge, kuigi teised eraldajad kindlasti töötavad) Esiteks peame lugema vaid osa kogu iTunes XML -fail. Faili osad, mis sisaldavad teavet, näiteks esitusloendid jne, pole vajalikud. Esitusloendite sektsiooni esimene rida, mis järgneb laulu teabele, näeb välja järgmine: EsitusloendidSeega saame mõne aja jooksul lisada avalduse, mis hüppab faili lugemise lõppu, kui see rida tekib.

while () {#loop_instructions_seath if if ($ _ = ~ m [Playlists])}Järgmisena saame räsitunnuste loomiseks kasutada andmebaasi räside koostamiseks puu if-elsif, kasutades eelmises etapis teada saanud mäluvaste muutujaid, et väärtused räsidesse salvestada

kui ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Hinnang (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Nimi (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Esitaja (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Nüüd, kui oleme loonud oma räsi andmebaasi aluse, käsitleme 1-tärni failide leidmist ja eemaldamist, nii et liikuge järgmise sammu juurde!

Samm 7: nende 1-tärniradade leidmine ja kustutamine

Nende ühetärniradade leidmine ja kustutamine
Nende ühetärniradade leidmine ja kustutamine

Nüüd, kui meil on andmebaas seadistatud, on aeg jahtida 1-tärni lugusid, et saaksime need kustutada. Perl pakub kasulikku silmuskonstruktsiooni, mida nimetatakse foreach -ahelaks ja mida saab kasutada kõigi meie räsivõtmete kordamiseks. Tuleb märkida, et mitte kõigil teie iTunes'i teegi lugudel ei ole reitingu räsi. Selle põhjuseks on asjaolu, et lugudele, millel puudub reiting, ei anta iTunes XML -failis pala reitingurea. Seetõttu tahame räsidest läbi sõites kasutada järgmist konstruktsiooni:

foreach $ id (sortimisklahvid %rate_hash) { #… sisestage siinkohakood}Pärast seda on see sama lihtne kui järgmise avalduse kasutamine

tühistage $ loc_hash {$ id} link, kui $ rate_hash {$ id} == 20;Ülaltoodud näidiskoodis kasutatav lahtiühendamise funktsioon on Perli viis failide kustutamiseks. Teil võib tekkida kiusatus kasutada süsteemikõnet oma operatsioonisüsteemi kustutamisfunktsioonile, kuid teisaldatavuse huvides ei kasuta minu kirjutatud kood süsteemikõnet. Nüüd on meie koodi põhistruktuur olemas. Järgmistes sammudes täpsustame koodi, et teil oleks täisfunktsionaalne ja funktsionaalne skript, et neist tüütutest 1-tärnidest lahti saada.

8. samm: URI põgeneb ja kuidas neist mööda pääseda

Kui proovite käivitada skripti sellisena, nagu see on, ilmneb teie operatsioonisüsteemist palju vigu ja kui vaatate kustutatavaid failiteid, võite leida soovimatutele radadele ebatavalisi märke. On üsna hea võimalus, et need teed sisaldavad URI põgenemismärke. Mis on URI põgenemised? HTML -is ja XML -is on URI põgenemismärgid (teise nimega URI põgenemised) spetsiaalsed metamärgid, mida kasutatakse selle märgi sõnasõnaliste eksemplaride otsimiseks. Näiteks ei näe te kunagi XML -märgistringis lihtsat tühikut. Siiski näete lihtsa tühiku XML -kujutist, %20. (Kindlasti olete neid oma brauseri URL-i ribal näinud ja mõelnud, mis need on. Noh, nüüd teate) URI-põgenemine koosneb % -märgist, millele järgneb kahekohaline kuueteistkümnendkood, mis tähistab tegelase ASCII-väärtust. punkti, võite asukoha räsile kirjutada terve hulga asenduslauseid, et asendada kõik võimalikud metamärgid (nt $ loc_hash {$ id} = ~ s/%20//ja nii edasi). Õnneks pakub Perl nende asjade eest hoolitsemiseks paremat viisi. Perl on komplekteeritud mooduliga nimega URI:: Escape, millel on sisseehitatud funktsioon uri_unescape, mis teeb meie jaoks URI põgenemiste kõrvaldamise. Mooduli kasutamiseks lisage lihtsalt oma koodi ülaossa järgmine rida:

kasuta URI -d:: Escape;Nüüd, kui oleme määranud massiivi $ loc_hash {$ id} XML -failiahelasse, saame pärast seda lisada järgmise rea

uri_unescape ($ loc_hash {$ id});Ülaltoodud rida kõrvaldab automaatselt kõik URI põgenemismärgid. Lisaboonusena tõlgib see ka mõningaid rahvusvahelisi tegelasi. Käivitasin skripti mõne failiteega, millel oli jaapani konji, ja funktsioon uri_unescape tõlkis nende märkide XML -vormingud nende algupärasteks tähemärkideks, et lahtiühendamine saaks faili edukalt kustutada. Enne jätkamist tuleb teha üks täiendav samm. Põhjustel, millest ma täielikult aru ei saa, kodeerib iTunes & ja (&) sümboli stringidena. Kui keegi teab, miks see nii on, palun andke mulle sellest teada. Vahepeal kõrvaldame selle probleemi, lisades rea uri_unescape alla rea

$ loc_hash {$ id} = ~ s/&#/&/;Nüüd on skripti failiteedel kummalised tähemärgid ja linkimise tühistamise funktsioon leiab failid nende kustutamiseks nende asukohast. See on nii, kui kasutate Mac OSX-i (ja arvatavasti ka enamikku teisi Unix-põhiseid OS-e). Lugege, kuidas muuta skript ühilduvaks ka teistes opsüsteemides (nimelt Windowsis).

Samm: skripti ühilduvuse lisamine Windowsile

Skripti ühilduvuse lisamine Windowsile
Skripti ühilduvuse lisamine Windowsile

Seni kirjutatud skript eemaldab tõhusalt rajad Unixil põhinevatest operatsioonisüsteemidest. Selle Windowsis toimimiseks on vaja ühte väikest täiendust. Erinevalt Macist ja muudest Unixil põhinevatest operatsioonisüsteemidest ei toeta Windows ühe juurkataloogi kontseptsiooni. Seetõttu algavad kõik patnimed helitugevusega (C: või E: või mis tahes muu tähega, mida võite selle jaoks mõelda), erinevalt juurkataloogist (/). Meie õnneks on Perlil eriline muutuja $O (see on suur o, mitte null), mis ütleb meile, millist operatsioonisüsteemi me praegu kasutame. Niisiis, kui sellesse muutujale salvestatud väärtus sisaldab "Win", tahame eemaldada XML -i asukohafaililt kaldkriipsu. Seda saab teha järgmise koodireaga (lisatud pärast raja asukoha edukat XML -failist parsimist):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) kui $^O = ~ /Win /i;Nüüd töötab skript, olenemata sellest, kas see töötab OS X -is või Windowsis.

Samm: lõpetatud skript

Valmis skript
Valmis skript

Lisatud on minu versioon lõpetatud iTunes'i automaatse kustutamise skriptist neile, kes soovisid lihtsalt lõpptoodet, mitte selgitust selle toimimise kohta.

Skripti kasutamiseks peate faili salvestama perl -failina (laiend.pl) ja seejärel muutma selle käivitatavaks (chmod 751 Unixis, pole kindel, mis see Windowsi süsteemide jaoks on).

Soovitan: