Obsah:

Odstráňte nechcené piesne iTunes z počítača: 10 krokov
Odstráňte nechcené piesne iTunes z počítača: 10 krokov

Video: Odstráňte nechcené piesne iTunes z počítača: 10 krokov

Video: Odstráňte nechcené piesne iTunes z počítača: 10 krokov
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Júl
Anonim
Odstráňte tieto nechcené skladby iTunes z počítača
Odstráňte tieto nechcené skladby iTunes z počítača

Hej, dámy a páni, toto je môj prvý návod na kódovanie, preto prosím, keď komentujete, nechajte svoje zbrane doma (nože sú však prijateľné). S príchodom prehrávačov mp3 bolo ľuďom umožnené nosiť so sebou nevídané množstvo. hudby vo svojom okolí a vo vreckách. Nie je neobvyklé počuť o ľuďoch, ktorí majú zbierky 5, 10, dokonca 15 000 piesní (a niektorí ľudia dokonca aj viac). Z prehrávačov mp3 nie je žiadny populárnejší ako iPod od spoločnosti Apple a softvér, ktorý ho prevádzkuje, iTunes. S tak veľkými hudobnými knižnicami však môže byť trochu únavné zbaviť sa skladieb, ktoré jednoducho neznie dobre alebo lákavo. ty už. Môže trvať celú dobu, kým sa vo vašej hudobnej zbierke v službe iTunes prejdete po skladbe a zbavíte sa skladieb, ktoré sa vám nepáčia. Tu prichádza na rad tento návod. V tomto návode vám ukážem spôsob, ako sa automaticky zbaviť skladieb ktoré sú jednoducho hrozné, s určitou pomocou môjho dobrého priateľa Perla. Dobrá základná znalosť jazyka Perl je mimoriadne nápomocná pri pokuse o zopakovanie tohto pokynu, aj keď nie je požadovaný (určite by ste mohli vziať hotový kódový produkt a skopírovať/vložiť a bude to fungovať dobre). Pre záujemcov o Perl vrelo odporúčam knihu „Learning Perl“od O'Reillyho, je to dobré čítanie a jedna z najlepšie napísaných kníh o Perle, akú som mal možnosť prečítať. DÔLEŽITÉ: Aj keď tu uvedené metódy budú fungovať. ak to urobíte správne, nemôžem a jednoducho neprijmem žiadnu zodpovednosť, ak urobíte niečo hlúpe a vymažete svoje vzácne piesne. Predtým, ako sa pokúsite napísať alebo spustiť skript, ako je nasledujúci, dôrazne zvážte zálohovanie svojich hudobných súborov. Len sa mýlite na strane opatrnosti, aby sme nemali žiadne pocity zranených, ak nie, vďaka. Prečítajte si varovanie? (Áno, dokonca aj vy, osoba, ktorá si neprečítala varovanie) Skvelé! Začnime:-) Aktualizácia: Zdá sa, že niektoré skripty v jazyku Perl tvrdo pracovali na písaní skriptov iTunes. Rôzne skripty súvisiace s iTunes nájdete v Teridonových skriptoch.

Krok 1: Začíname

Začíname
Začíname

Rovnako ako všetky veci, aj tu je potrebná malá príprava, než budeme môcť spustiť tento skript. Čo teda budete potrebovať na automatické odstraňovanie skladieb z iTunes: 1) počítač (duh) 2) iTunes (double duh) 3) perl (ťažko spustiteľný skript v jazyku Perl bez programu Perl, čo poviete?) 4) váš obľúbený editor (som zástancom vi a vim sám, ale každý textový editor by to mal zvládnuť) 5) iPod (nie je povinný, ale je pekné ho mať z dôvodov, ktoré budú čoskoro objasnené) Získanie Perlu: Postupujte podľa Tu uvedené pokyny by mali byť dostatočne jednoduché: https://www.perl.com/download.cspAkonáhle budete mať Perl stiahnutý, nainštalovaný a pripravený ísť, budeme chcieť nejaké základné informácie o tom, čo robíme. Je potrebné poznamenať, že skript bol pôvodne vyvinutý pre Mac OS X, aj keď rovnaké metódy by mali fungovať na operačných systémoch iných ako Unix, ako je Windows. Čas na nudnú, ehm, „vzdelávaciu“časť Instructable.

Krok 2: Myšlienka základného skriptu

iTunes obsahuje 5-hviezdičkový hodnotiaci systém, ktorý používateľom umožňuje hodnotiť skladby. Skladby s 5-hviezdičkovým hodnotením sú považované za najlepšie piesne, zatiaľ čo piesne s 1-hviezdičkovým hodnotením sú považované za jedny z najhorších. Na naše účely budeme predpokladať, že každá skladba, ktorej chýba hodnotenie (alias 0 hviezdičiek), je taká, ktorú používateľ ešte nemal možnosť hodnotiť. Osobne pri hodnotení skladieb, ak má skladba hodnotenie 1 hviezdičkou, zistíte, že je asi dosť zlé, že si nezaslúži vzácny priestor na pevnom disku, ktorý pieseň zaberá. Preto skript Perl, ktorý vám predstavím v tomto návode, bude analyzovať knižnicu iTunes a odstráni každú skladbu, ktorej bolo priradené hodnotenie 1 hviezdičkou. Ako ďalší bonus je možné skladby hodnotiť, keď je používateľ na cestách. pomocou zariadenia iPod. Týmto spôsobom si môžete vybrať skladby, ktoré chcete odstrániť, keď ste na cestách, jednoducho ich ohodnotiť, a budú automaticky odstránené pri neskoršej synchronizácii vášho iPodu s počítačom (ak svoj iPod synchronizujete automaticky s počítačom). Teraz vieme, čo robíme, uvidíme, ako sa nám podarí získať informácie o skladbách z iTunes pre skript Perl.

Krok 3: Knižnica XML: ITunes 'Goto Guy

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

Na odstránenie skladby z počítača na základe jej hodnotenia potrebujeme dve informácie: hodnotenie piesne a polohu piesne. Našťastie pre nás existuje šikovný súbor, z ktorého môžeme získať všetky informácie, ktoré sme kedy chceli o iTunes: súbor XML hudobnej knižnice iTunes. Súbor XML sa nazýva „iTunes Music Library.xml“a mal by byť umiestnený vo vašom priečinku Hudba na hlavnom pevnom disku.

O súbore XML: Súbor xml iTunes je druh databázy, ktorú spravuje iTunes a je vždy aktuálna. Keď sa v iTunes vykoná úprava, zodpovedajúca časť súboru iTunes iTunes sa upraví, aby si túto zmenu všimla. Nasleduje vzorový záznam z môjho súboru XML iTunes: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG zvukový súborVeľkosť3682382Celkový čas230138Dátum upravené2007-09-24T02: 11: 30ZDátum pridané2008-05-28T05: 00: 24ZBit Rate12 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20OibLile1 Count1, count1 súbor XML pozostáva z hodnôt obklopených značkami v štýle HTML. Na účely scenára nás budú zaujímať informácie o ID stopy, mene, interpretovi, hodnotení a umiestnení. Ak sa pozeráte na súbor XML, zhora si môžete všimnúť, že táto pieseň má „hodnotenie“40. iTunes priraďuje každej skladbe celé číslo v rozsahu od 0 do 100, pričom každých 20 bodov je ďalšou hviezdičkou hodnotenia. Hodnotenie 20 teda zodpovedá 1 hviezdičkovému hodnoteniu, hodnotenie 40 je 2 hviezdičkové hodnotenie a tak ďalej, pričom 100 je 5-hviezdičkové hodnotenie. Teraz, keď vieme o súbore XML, začneme skriptovať

Krok 4: Váš priateľ hash (aj keď nie ste v Amsterdame)

Váš priateľ Haš (aj keď nie ste v Amsterdame)
Váš priateľ Haš (aj keď nie ste v Amsterdame)

Pred odstránením súborov potrebujeme funkčnú databázu, ktorá spája všetky informácie o skladbe dohromady. Aj keď je možné použiť aj sofistikovanejšie dátové štruktúry, ako napríklad pole hash alebo hash hash, tento skript je dostatočne jednoduchý na to, aby si zaslúžil použitie jednoduchého zoznamu hashov. Pre nezasvätených nie je hash nič iné ako pole, ktoré je indexovaný reťazcami alebo zmiešanou masou párov kľúč/hodnota. O hashe sa dá uvažovať ako o veľkom bareli, v ktorom sú veci (hodnoty), a všetko v metaforickom bare má pripevnenú značku (kľúče). Akýkoľvek predmet v sude môžete vytiahnuť jednoducho tak, že nájdete jeho štítok. Ak chcete získať ďalšie informácie o hash, môže byť užitočný nasledujúci odkaz: https://www.tutorialspoint.com/perl/perl_hashes.htmMôžeme použiť informáciu, že každej skladbe v súbore iTunes XML je priradený jedinečný ID stopy na sledovanie pesničky. Z tohto dôvodu je trackID ideálnym kľúčom pre hash. Preto môžeme nastaviť 4 hashovanie pre názov piesne, interpreta, hodnotenie a umiestnenie. Akonáhle sú tieto vytvorené, môžeme skenovať súbor a naplniť našu databázu hash pomocou niekoľkých jednoduchých regulárnych výrazov, ktoré budú zobrazené ďalej.

Krok 5: A (veľmi) krátka lekcia o regulárnych výrazoch

Aby sme získali naše hašovacie položky zo súboru XML a tiež ušetrili trochu času pri hľadaní, budeme chcieť privolať na pomoc jednu z výkonnejších funkcií Perlu: regulárny výraz. Urobím veľmi krátku lekciu o regulárnych výrazoch, ale pre tých z vás, ktorí chcú podrobnejšie vysvetlenia, je na internete veľa dobrých návodov na regulárny výraz. Na https://perldoc.perl.org/perlretut.html nájdete návod na dobré regulárne výrazy. Stručne povedané, regulárne výrazy nám poskytujú sadu nástrojov na prechádzanie reťazcov, nahradenie jedného reťazca iným reťazcom alebo ukladanie častí reťazec na neskoršie použitie. Regulárne výrazy poskytujú 2 funkcie, operátory párovania (m //) a náhrady (s //), ktoré sa budú používať pre tento projekt. Ak chcete použiť ktorúkoľvek z týchto funkcií v kontexte priradenia, použijeme operátor väzby Perl (= ~), ktorý sa používa na väzbu vzoru na zvolenú reťazcovú premennú. Príklady:

$ comment = ~ /Purduecer /; #returns true if $ comment string contains phrase "Purduecer" s/[a-z]/[A-Z]/; #vezmite všetky malé písmená do reťazca a začnite ich používať v reťazci $ _Druhou užitočnou vlastnosťou regulárnych výrazov sú pamäťové premenné. V regulárnych výrazoch môžete umiestniť určité položky do zátvorky a potom použiť špeciálne premenné pamäte zhody vzorov $ 1, $ 2 atď., Aby ste sa neskôr dostali k častiam reťazcov, ktoré zodpovedali týmto častiam. Príklady

/(Pokyny) Robot/; #Zhodujte sa s akýmkoľvek riadkom s frázou „Robot s pokynmi“$ web = $ 1; #Uložiť výsledok úspešnej zhody vzorov obsiahnutý v prvej skupine parens #(v tomto prípade premenná $ 1 obsahuje „Instructables“)Nakoniec, v regulárnych výrazoch existujú určité znaky, ktoré slúžia špeciálnemu účelu. Ide o úniky spätnou lomkou (všetky by mali programátorom C vyzerať dobre), triedy znakov a metaznaky. Dalo by sa napríklad povedať, že na priradenie ľubovoľného písmena, ktoré má na oboch stranách záložku

/\ t [a-zA-Z] t/Tieto hranaté zátvorky sa používajú v regulárnych výrazoch na definovanie triedy znakov. Predpokladajme však, že v riadku chceme nájsť text uzavretý v hranatých zátvorkách. Nemohli sme to jednoducho napísať tak, ako je, ako je uvedené nižšie

/

/

Krok 6: Použitie regulárnych výrazov na skript ITunes

Použitie regulárnych výrazov na skript ITunes
Použitie regulárnych výrazov na skript ITunes

Teraz, keď dúfame, že máme prehľad o základných základných pojmoch, ktoré poháňajú regulárne výrazy, je načase ich použiť v skripte iTunes. Pri čítaní kódu xml sa s určitými znakmi, ako napríklad lomka, stretávame pomerne často. Preto využijeme skutočnosť, že operátor m // vám umožní vybrať v programe akékoľvek oddeľovače, ktoré chcete (použijeme hranaté zátvorky, aj keď iné oddeľovače určite budú fungovať) Najprv si musíme prečítať iba časť celý súbor iTunes iTunes. Časti súboru obsahujúce informácie, ako sú zoznamy skladieb atď., Nie sú potrebné. Prvý riadok sekcie zoznamov skladieb, ktorý nasleduje za informáciou o skladbe, vyzerá nasledovne: Zoznamy skladieb Preto v slučke chvíľu môžeme pridať príkaz, ktorý v prípade výskytu tohto riadka skočí na koniec čítania súboru.

while () {#loop_instructions_here last if ($ _ = ~ m [Playlists])}Ďalej, na zostavenie hash ID, môžeme použiť strom if-elsif na zostavenie hashov našej databázy pomocou premenných zhody pamäte, o ktorých sme sa dozvedeli v predchádzajúcom kroku, na uloženie hodnôt do hash.

ak ($ _ = ~ m [( d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Hodnotenie ( d+)]) {$ rate_hash {$ id} = 1 dolár; } elsif ($ _ = ~ m [Name (.+)]) {$ name_hash {$ id} = 1 dolár; } elsif ($ _ = ~ m [Artist (.+)]) {$ art_hash {$ id} = 1 dolár; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Teraz, keď sme vytvorili základ našej databázy hash, budeme sa zaoberať vyhľadávaním a odstraňovaním 1-hviezdičkových súborov, takže pokračujte ďalším krokom!

Krok 7: Vyhľadanie a vymazanie týchto 1-hviezdičkových skladieb

Umiestnenie a odstránenie týchto 1-hviezdičkových skladieb
Umiestnenie a odstránenie týchto 1-hviezdičkových skladieb

Teraz, keď máme databázu nastavenú, je načase vyhľadať 1-hviezdičkové stopy, aby sme ich mohli odstrániť. Perl poskytuje užitočnú slučkovú konštrukciu nazývanú foreach loop, ktorú je možné použiť na iteráciu všetkých kľúčov našich hash. Je potrebné poznamenať, že nie každá stopa vo vašej knižnici iTunes bude mať záznam v hashe hodnotení. Dôvodom je, že skladbám, ktoré nemajú hodnotenie, nie je v súbore XML iTunes k dispozícii riadok s hodnotením stopy. Preto pri cyklovaní medzi hashami budeme chcieť použiť nasledujúcu konštrukciu:

foreach $ id (triediace kľúče %rate_hash) { #… sem vložte opakovací kód}Potom je to už jednoduché ako použitie nasledujúceho príkazu

odpojiť $ loc_hash {$ id}, ak $ rate_hash {$ id} == 20;Funkcia odpojenia použitá vo vyššie uvedenom vzorovom kóde je spôsob, akým Perl odstraňuje súbory. Môžete byť v pokušení použiť systémové volanie na funkciu odstránenia operačného systému, ale z dôvodov prenosnosti kód, ktorý som napísal, systémové volanie nepoužíva. Teraz máme základnú štruktúru nášho kódu. V nasledujúcich krokoch urobíme niekoľko vylepšení kódu, aby ste mali k dispozícii plne funkčný a funkčný skript, ktorý vás zbaví týchto otravných 1 hviezdičiek.

Krok 8: Úniky URI a ako sa s nimi zoznámiť

Ak sa pokúsite spustiť skript tak, ako je, narazíte na množstvo chýb vo vašom operačnom systéme. Ak sa pozriete na cesty k súborom, ktoré sa pokúšate odstrániť, v cestách, ktoré sú nežiaduce, môžu byť vložené neobvyklé znaky. Je dosť pravdepodobné, že tieto cesty obsahujú znaky úniku URI. Čo sú úniky URI? V HTML a XML sú únikové znaky URI (aka úniky URI) špeciálne metaznaky používané na vyhľadávanie doslovných inštancií tohto znaku. Napríklad v reťazci znakov XML nikdy neuvidíte jednoduchý prázdny priestor. Uvidíte však XML reprezentáciu jednoduchého medzery, %20. (Určite ste ich už videli v paneli s adresou URL vo svojom prehliadači a pýtali ste sa, aké to sú. Teraz to viete) Únik z identifikátora URI pozostáva zo znaku %, za ktorým nasleduje 2-miestny hexadecimálny kód predstavujúci hodnotu ASCII postavy. V tomto prípade point, môžete napísať celú skupinu príkazov nahradiť na hash umiestnenia, ktorý nahradí všetky možné metaznaky, s ktorými sa stretnete (tj $ loc_hash {$ id} = ~ s/%20//; a tak ďalej). Našťastie však Perl poskytuje lepší spôsob, ako sa o tieto veci postarať. Perl je dodávaný s modulom s názvom URI:: Escape, ktorý má vstavanú funkciu uri_unescape, ktorá nám pomôže odstrániť úniky URI.. Ak chcete modul použiť, jednoducho pridajte nasledujúci riadok do hornej časti kódu:

použiť URI:: Escape;Teraz, keď priradíme pole $ loc_hash {$ id} v slučke súborov XML, môžeme potom pridať nasledujúci riadok

uri_unescape ($ loc_hash {$ id});Vyššie uvedený riadok automaticky eliminuje všetky únikové znaky URI. Ako bonus navyše prekladá aj niektoré medzinárodné postavy. Spustil som skript s niekoľkými cestami súborov, v ktorých bolo japonské konji, a funkcia uri_unescape preložila formáty XML týchto znakov do ich pôvodných znakov, aby bolo možné odpojením úspešne odstrániť súbor. Predtým, ako sa pohneme ďalej, je potrebné urobiť ešte jeden krok. Z dôvodov, ktorým úplne nerozumiem, iTunes kóduje symbol ampersand (&) ako & v jeho reťazcoch. Ak niekto vie, prečo je to tak, dajte mi prosím vedieť. Medzitým tento problém odstránime pridaním nasledujúceho riadka pod riadok uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;Teraz bude mať skript dráhy súboru bez zvláštnych znakov a funkcia odpojenia bude môcť nájsť súbory na správnych miestach a odstrániť ich. Bude to platiť, ak používate Mac OSX (a pravdepodobne aj väčšinu ostatných operačných systémov založených na Unixe). Pokračujte v čítaní, aby bol skript kompatibilný s inými operačnými systémami (menovite Windows).

Krok 9: Pridanie kompatibility skriptov do systému Windows

Pridanie kompatibility skriptov do systému Windows
Pridanie kompatibility skriptov do systému Windows

Skript, ako bol doteraz napísaný, efektívne odstraňuje stopy v operačných systémoch založených na Unixe. Aby to fungovalo v systéme Windows, je potrebný jeden malý dodatok. Na rozdiel od počítačov Mac a iných OS založených na systéme Unix systém Windows nepodporuje koncept jedného koreňového adresára. Preto všetky názvy ciest začínajú zväzkom (C: alebo E: alebo akýmkoľvek iným písmenom, ktoré vás napadne) na rozdiel od koreňového adresára (/). Našťastie pre nás má Perl špeciálnu premennú $O (to je veľké o, nie nula), to nám hovorí, aký operačný systém práve používame. Ak teda hodnota uložená v tejto premennej obsahuje „Win“, budeme chcieť odstrániť úvodnú lomku na našej ceste k súboru umiestnenia XML. To je možné vykonať pomocou nasledujúceho riadku kódu (pridaného po úspešnej analýze umiestnenia stopy zo súboru XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) ak $^O = ~ /Win /i;Teraz bude skript fungovať, či už je spustený na OS X alebo Windows.

Krok 10: Dokončený skript

Dokončený skript
Dokončený skript

V prílohe je moja verzia dokončeného skriptu na automatické vytváranie iTunes pre tých z vás, ktorí chceli iba konečný produkt, a nie vysvetlenie, ako funguje.

Ak chcete použiť skript, budete ho chcieť uložiť ako súbor Perl (prípona.pl) a potom ho urobiť spustiteľným (chmod 751 v Unixe, nie ste si istí, čo je to pre systémy Windows).

Odporúča: