INHOUDSOPGAWE:

Verwyder die ongewenste iTunes -liedjies van u rekenaar: 10 stappe
Verwyder die ongewenste iTunes -liedjies van u rekenaar: 10 stappe

Video: Verwyder die ongewenste iTunes -liedjies van u rekenaar: 10 stappe

Video: Verwyder die ongewenste iTunes -liedjies van u rekenaar: 10 stappe
Video: LP - Lost On You (Live) 2024, November
Anonim
Verwyder die ongewenste iTunes -liedjies van u rekenaar
Verwyder die ongewenste iTunes -liedjies van u rekenaar

Hallo dames en here, dit is my eerste kodering wat opdrag gegee kan word, so laat asseblief u gewere by die huis los (messe is egter aanvaarbaar). Met die koms van mp3 -spelers is dit moontlik gemaak dat mense ongekende hoeveelhede kon dra musiek rond met hulle in hul sakke. Dit is nie ongewoon om te hoor van mense met versamelings van 5, 10, selfs 15 duisend liedjies nie (en sommige mense, selfs meer). Van die mp3 -spelers is niemand meer gewild as Apple se iPod en die sagteware wat dit bestuur nie, iTunes. Met sulke groot musiekbiblioteke kan dit egter ietwat vervelig raak om van die liedjies ontslae te raak wat eenvoudig nie goed klink of aantreklik is nie. jy meer. Dit kan eeue neem om een vir een deur jou musiekversameling in iTunes te gaan en van die liedjies wat jy nie hou nie, ontslae te raak. Dit is waar hierdie instruksies inkom. In hierdie instruksies sal ek jou 'n manier wys om outomaties van liedjies ontslae te raak. Dit is eenvoudig eenvoudig, met die hulp van my goeie vriend, Perl. 'n Goeie basiese kennis van Perl is baie nuttig as u probeer om hierdie instruksies te herhaal, maar dit is nie nodig nie (u kan beslis die finale kodeproduk neem en kopieer/plak dit sal goed werk). Vir diegene wat in Perl belangstel, ek beveel die boek "Learning Perl" van O'Reilly ten sterkste aan, dit is 'n goeie leesstof en een van die beste geskrewe boeke oor Perl wat ek die kans gekry het om te lees. BELANGRIK: Alhoewel die metodes wat hier aangebied word, sal werk As dit reg gedoen word, kan ek eenvoudig nie verantwoordelikheid aanvaar as u iets dom doen en u kosbare liedjies uitvee nie. Oorweeg dit sterk om 'n rugsteun van u musieklêers te maak voordat u 'n script soos die volgende probeer skryf of uitvoer. Dwars net aan die kant van versigtigheid, sodat ons geen gevoelens kan seermaak nie, dankie. Lees die waarskuwing? (Ja, selfs jy, persoon wat nie die waarskuwing gelees het nie) Fantasties! Kom ons begin:-) Opdatering: Dit lyk asof sommige perl-skrywers hard besig was om iTunes-skrifte op te stel. Kyk na Teridon's Scripts vir 'n verskeidenheid iTunes-verwante skrifte.

Stap 1: Aan die gang

Aan die gang kom
Aan die gang kom

Soos met alle dinge, is daar 'n bietjie voorbereiding wat ons moet doen voordat ons hierdie skrif kan uitvoer. Dinge wat u nodig het om outomaties liedjies uit iTunes te verwyder: 1) 'n rekenaar (duh) 2) iTunes (dubbele duh) 3) Perl (moeilik om 'n Perl -script uit te voer sonder Perl, sou u nie sê nie?) 4) Jou gunsteling redakteur (ek is self 'n voorstander van vi en vim, maar enige teksredakteur moet die ding doen) 5) 'n iPod (nie verpligtend nie, maar lekker om redes wat binnekort duidelik gemaak sal word) Getting Perl: Follow the Die instruksies hier moet eenvoudig genoeg wees: https://www.perl.com/download.csp Sodra Perl afgelaai, geïnstalleer en gereed is om te begin, wil ons 'n paar agtergrondinligting hê oor wat ons doen. Daar moet op gelet word dat die script oorspronklik ontwikkel is vir Mac OS X, hoewel dieselfde metodes moet werk op nie-Unix-gebaseerde bedryfstelsels, soos Windows. Tyd vir die vervelige, opvoedkundige deel van die Instructable.

Stap 2: Die basiese skripidee

iTunes bevat 'n 5-ster-graderingstelsel waarmee gebruikers liedjies kan beoordeel. Liedjies met 'n 5-ster-gradering word beskou as die beste liedjies, terwyl liedjies met 'n 1-ster-gradering as een van die slegste liedjies beskou word. Vir ons doeleindes, aanvaar ons dat 'n liedjie sonder 'n gradering (ook bekend as 0 sterre) 'n liedjie is wat die gebruiker nog nie 'n kans gehad het om te beoordeel nie. vind dit waarskynlik erg genoeg dat dit nie die kosbare hardeskyfspasie wat die liedjie opneem, verdien nie. Daarom sal die Perl-skrip wat ek in hierdie instruksies aan u voorlê, deur die iTunes-biblioteek ontleed en enige snit wat 'n 1-ster-gradering ontvang het, uitvee. As 'n ekstra bonus kan die liedjies beoordeel word terwyl die gebruiker onderweg is met behulp van 'n iPod. Op hierdie manier kan u die liedjies wat u wil verwyder, eenvoudig kies deur dit te beoordeel, en dit word outomaties uitgevee as u u iPod later met u rekenaar sinkroniseer (as u u iPod outomaties met u rekenaar sinkroniseer). Nou weet ons wat ons doen, laat ons kyk hoe ons liedjie -inligting van iTunes vir die Perl Script sal haal.

Stap 3: Die XML -biblioteek: Goto Guy van iTunes

Die XML -biblioteek: Goto Guy van iTunes
Die XML -biblioteek: Goto Guy van iTunes

Om 'n liedjie van die rekenaar te verwyder, gebaseer op die gradering daarvan, benodig ons 2 stukke inligting: die liedjie se gradering en die ligging van die liedjie. Gelukkig is daar 'n handige lêer waaruit ons alle inligting kan kry wat ons ooit oor iTunes wou hê: die XML -lêer van die iTunes Music Library. Die XML -lêer heet "iTunes Music Library.xml" en moet in u musiekgids op u hoofskyf geleë wees.

Oor die XML -lêer: Die iTunes xml -lêer is 'n soort databasis wat deur iTunes onderhou word en altyd op datum gehou word. As 'n wysiging in iTunes aangebring word, word die ooreenstemmende gedeelte van die iTunes XML -lêer gewysig om hierdie verandering na te kom. 'N Voorbeeld van my iTunes XML-lêer word hieronder gegee: 1218 Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG-klanklêerGrootte3682382Totale tyd230138Datum gewysig2007-09-24T02: 11: 30ZDatum bygevoeg2008-05-28T05: 00: 24ZB2Tijd8Spel2008 Datum2002 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me1p3 die XML-lêer bestaan uit waardes omring deur tags in HTML-styl. Vir die doeleindes van die draaiboek sal ons belangstel in die snit -ID, naam, kunstenaar, gradering en ligging inligting. As u na die XML -lêer kyk, kan u van bo af sien dat hierdie lied 'n "gradering" van 40 het. ITunes ken elke liedjie 'n heelgetal toe, wat wissel van 0 tot 100, met elke 20 punte 'n ekstra ster vir die gradering. Dus, 'n gradering van 20 stem ooreen met 'n 1-ster-gradering, 'n gradering van 40 is 'n 2-ster-gradering, ensovoorts, met 100 'n 5-ster-gradering. Noudat ons van die XML -lêer weet, begin ons met skripte

Stap 4: Jou vriend die hasj (selfs al is jy nie in Amsterdam nie)

Jou vriend die hasj (selfs al is jy nie in Amsterdam nie)
Jou vriend die hasj (selfs al is jy nie in Amsterdam nie)

Voordat ons lêers kan uitskakel, benodig ons 'n werkende databasis wat al die liedjie -inligting met mekaar verbind. Alhoewel meer gesofistikeerde datastrukture, soos 'n reeks hashes of hash of hash, gebruik kan word, is hierdie script eenvoudig genoeg om 'n eenvoudige lys hashes te gebruik. word geïndekseer deur snare, of 'n deurmekaar massa sleutel-/waardepare. 'N Mens kan aan 'n hash dink as 'n groot vat met goed (die waardes) daarin, en alles in die metaforiese vat het 'n etiket (die sleutels) aangeheg. U kan enige item in die vat uittrek deur eenvoudig die etiket daarvan te vind. Vir meer inligting oor hashes, kan die volgende skakel nuttig wees: https://www.tutorialspoint.com/perl/perl_hashes.htm Ons kan die inligting gebruik wat aan elke liedjie in die iTunes XML -lêer 'n unieke snit -ID toegewys is om by te hou die liedjies. As gevolg hiervan is die trackID 'n ideale sleutel vir die hashes. Daarom kan ons 4 hashes vir liedtitel, kunstenaar, gradering en ligging opstel. Sodra dit vasgestel is, kan ons deur die lêer skandeer en ons hash -databasis vul met 'n paar eenvoudige reëlmatige uitdrukkings, wat vervolgens vertoon sal word.

Stap 5: 'n (baie) kort les oor gereelde uitdrukkings

Om ons hash -inskrywings uit die XML -lêer te haal en ook 'n bietjie tyd te soek, wil ons 'n beroep doen op een van die meer kragtige funksies van Perl: die gewone uitdrukking. Ek sal 'n baie kort les doen oor gereelde uitdrukkings, maar vir diegene wat meer gedetailleerde verduidelikings wil hê, is daar baie goeie tutoriale vir gereelde uitdrukkings aanlyn. Besoek https://perldoc.perl.org/perlretut.html vir 'n goeie handleiding vir gereelde uitdrukkings. In kort, gereelde uitdrukkings bied ons 'n stel gereedskap om deur snare te gaan, een string met 'n ander string te vervang of gedeeltes te stoor 'n string vir latere gebruik. Gereelde uitdrukkings bied 2 funksies, die ooreenstemmende (m //) en vervangings (s //) operateurs, wat vir hierdie projek gebruik gaan word. Om een van hierdie funksies in 'n opdragkonteks te gebruik, gebruik ons Perl se bindingsoperator (= ~), wat gebruik word om 'n patroon aan 'n string veranderlike van keuse te bind.

$ comment = ~ /Purduecer /; #terugkeer waar as $ comment string die frase "Purduecer" s/[a-z]/[A-Z]/bevat; #teken alle kleinletters in string en gebruik dit in $ _ string'N Tweede nuttige kenmerk van gereelde uitdrukkings is die van geheueveranderlikes. In gewone uitdrukkings kan u sekere items tussen hakies plaas, en dan die spesiale patroongeheue -veranderlikes $ 1, $ 2, ens. Gebruik om later toegang te verkry tot die gedeeltes van die snare wat by hierdie dele pas.

/(Instruksies) Robot/; #Pas enige lyn met die frase "Instructables Robot" $ webwerf = $ 1; #Stoor die resultaat van 'n suksesvolle patroonpassing in die eerste stel parens #(in hierdie geval bevat veranderlike $ 1 'instruksies')Laastens, in gewone uitdrukkings, is daar sekere karakters wat 'n spesiale doel dien. Dit is ontvlugtings (wat almal vir C -programmeerders bekend moet lyk), karakterklasse en metakarakters. Byvoorbeeld, om by enige letter met 'n oortjie aan weerskante te pas, kan ons sê

/\ t [a-zA-Z] t/Daardie vierkantige hakies word in gewone uitdrukkings gebruik om 'n karakterklas te definieer. Gestel egter dat ons teks tussen hakies in die reël wou vind. Ons kon dit nie net eenvoudig skryf soos dit is nie, soos hieronder getoon word

/

/

Stap 6: Toepassing van gewone uitdrukkings op die ITunes Script

Gereelde uitdrukkings op die ITunes -script toe te pas
Gereelde uitdrukkings op die ITunes -script toe te pas

Noudat ons hopelik 'n idee het van die basiese onderliggende konsepte wat gereelde uitdrukkings aandryf, is dit tyd om dit op die iTunes -script toe te pas. Daarom sal ons voordeel trek uit die feit dat die m // -operator u kan laat kies watter afbakening u ook al in die kode wil hê (ons sal vierkantige hakies gebruik, alhoewel ander skeidingstekens beslis sal werk) Eerstens hoef ons slegs 'n gedeelte van die volledige iTunes XML -lêer. Dele van die lêer wat inligting bevat, soos snitlyste, ens., Is nie nodig nie. Die eerste reël van die snitlyste -afdeling, wat na die liedjie -inligting kom, lyk soos volg: Snitlyste Daarom kan ons binne 'n rukkie 'n stelling byvoeg wat na die einde van die lêer spring as die reël voorkom.

terwyl () {#loop_instruksies_hier duur as ($ _ = ~ m [Playlists])}Om vervolgens die hash-ID's te bou, kan ons 'n if-elsif-boom gebruik om ons databasis-hash te bou, met behulp van die geheue-ooreenstemmende veranderlikes waarvan ons in die vorige stap geleer het om waardes in die hash te stoor

as ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Rating (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Naam (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Kunstenaar (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Noudat ons die basis van ons hash-databasis saamgestel het, behandel ons die opspoor en verwydering van 1-ster-lêers, so verder na die volgende stap!

Stap 7: Die opspoor en verwydering van daardie 1-ster-snitte

Die opspoor en verwydering van daardie 1-ster-snitte
Die opspoor en verwydering van daardie 1-ster-snitte

Noudat ons ons databasis opgestel het, is dit tyd om die 1-ster-snitte te soek, sodat ons dit kan verwyder. Perl bied 'n nuttige luskonstruksie genaamd 'n voorluslus, wat gebruik kan word om al die sleutels van ons hashes te herhaal. Dit is omdat liedjies wat nie 'n gradering het nie, nie 'n snitgraderingslyn in die iTunes XML -lêer kry nie. Daarom, as ons deur die hashes loop, wil ons die volgende konstruk gebruik:

soek $ id (sorteer sleutels %rate_hash) { #… voeg luskode hier in}Daarna is dit so eenvoudig soos om die volgende stelling te gebruik

ontkoppel $ loc_hash {$ id} as $ rate_hash {$ id} == 20;Die ontkoppelingsfunksie wat in die voorbeeldkode hierbo gebruik word, is Perl se manier om lêers te verwyder. U kan in die versoeking kom om 'n stelseloproep na die verwyderingsfunksie van u bedryfstelsel te gebruik, maar om draagbaarheidsredes gebruik die kode wat ek geskryf het nie die stelseloproep nie. Ons het nou die basiese struktuur vir ons kode. In die volgende stappe maak ons 'n paar verbeterings aan die kode, sodat u 'n volledige funksionele skrif kan hê om van die lastige 1-sterre ontslae te raak.

Stap 8: URI ontsnap en hoe om dit te hanteer

As u probeer om die skrip te laat loop, loop u talle foute in u bedryfstelsel af, en as u na die lêerpaaie kyk wat u probeer verwyder, kan u ongewone karakters in die roetes vind. Die kans is goed dat hierdie paaie URI -ontsnappingskarakters bevat. Wat is URI -ontsnappings? In HTML en XML is URI -ontsnapkarakters (oftewel URI -ontsnappings) spesiale metakarakters wat gebruik word om letterlike gevalle van die karakter te soek. U sal byvoorbeeld nooit 'n eenvoudige witruimte in 'n XML -tekenreeks sien nie. U sal egter die XML -voorstelling van 'n eenvoudige witruimte, %20, sien. (U het dit seker in die URL-balk in u blaaier gesien en gewonder wat dit is. Wel, nou weet u) 'n URI-ontsnapping bestaan uit 'n % -teken gevolg deur 'n 2-syfer heksadesimale kode wat die karakter se ASCII-waarde verteenwoordig. punt, u kan 'n hele klomp vervangingsverklarings op die lokasie -hash skryf om elke moontlike metakarakter wat u teëkom, te vervang (dws $ loc_hash {$ id} = ~ s/%20//; ensovoorts). Gelukkig bied Perl egter 'n beter manier om vir hierdie dinge te sorg. Perl kom saam met 'n module genaamd URI:: Escape, met 'n ingeboude funksie, uri_unescape, wat die werk van die eliminering van die URI-ontsnappings vir ons sal doen. Om die module te gebruik, voeg eenvoudig die volgende reël bo -aan u kode by:

gebruik URI:: Escape;Nadat ons die skikking $ loc_hash {$ id} in die XML -lêerlus toegewys het, kan ons daarna die volgende reël byvoeg

uri_unescape ($ loc_hash {$ id});Bogenoemde reël elimineer outomaties URI -ontsnapkarakters. As 'n ekstra bonus vertaal dit ook 'n paar internasionale karakters. Ek het die draaiboek uitgevoer met 'n paar filepaths met Japannese konji, en die uri_unescape -funksie het die XML -formate van die karakters vertaal na hul oorspronklike karakters sodat die ontkoppeling die lêer suksesvol kon verwyder. Voordat ons verder gaan, moet nog 'n stap. Om redes wat ek nie heeltemal verstaan nie, kodeer iTunes die ampersand (&) simbool as en in sy snare. As iemand weet hoekom dit is, laat weet my asseblief. Intussen skakel ons hierdie probleem uit deur die volgende reël onder die uri_unescape -reël by te voeg

$ loc_hash {$ id} = ~ s/&#/&/;Nou sal die script filepate sonder vreemde karakters hê, en die ontkoppelingsfunksie kan lêers op hul regte plekke vind om dit te verwyder. Dit sal wel so wees as u Mac OSX gebruik (en vermoedelik ook die meeste ander op Unix gebaseerde bedryfstelsels). Lees verder om die script versoenbaar te maak op ander bedryfstelsels (naamlik Windows).

Stap 9: Voeg scriptversoenbaarheid by Windows

Voeg scriptversoenbaarheid by Windows
Voeg scriptversoenbaarheid by Windows

Die script, soos dit tot dusver geskryf is, verwyder spore op Unix-gebaseerde bedryfstelsels effektief. Om dit op Windows te laat werk, is een klein toevoeging nodig. Anders as Mac en ander op Unix gebaseerde bedryfstelsels, ondersteun Windows nie die konsep van 'n enkele wortelmap nie. Daarom begin alle padname met 'n volume (C: of E: of enige ander letter waaraan u kan dink) in teenstelling met die wortelgids (/). Gelukkig vir ons het Perl 'n spesiale veranderlike, $O (dit is 'n hoofletter, nie 'n nul nie), wat ons vertel watter bedryfstelsel ons tans gebruik. Dus, as die waarde wat in die veranderlike gestoor is, 'Win' bevat, wil ons die hoofstreep op ons XML -ligging -filepad verwyder. Dit kan gedoen word met die volgende reël kode (bygevoeg nadat ons die ligging van 'n snit uit die XML -lêer suksesvol ontleed het):

$ loc_hash {$ id} = substraat ($ loc_hash {$ id}, 1) as $^O = ~ /Win /i;Die skrip werk nou, of dit op OS X of Windows uitgevoer word.

Stap 10: Die voltooide skrif

Die voltooide skrif
Die voltooide skrif

Hierby is my weergawe van die voltooide iTunes -outodeletion -skrip, vir u wat net die eindproduk wou hê en nie die verduideliking oor hoe dit werk nie.

Om die script te gebruik, wil u die lêer stoor as 'n perl -lêer (.pl -uitbreiding) en dit dan uitvoerbaar maak (chmod 751 in Unix, nie seker wat dit vir Windows -stelsels is nie).

Aanbeveel: