Obsah:

Odstraňte tyto nechtěné skladby iTunes z počítače: 10 kroků
Odstraňte tyto nechtěné skladby iTunes z počítače: 10 kroků

Video: Odstraňte tyto nechtěné skladby iTunes z počítače: 10 kroků

Video: Odstraňte tyto nechtěné skladby iTunes z počítače: 10 kroků
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, Listopad
Anonim
Odstraňte tyto nechtěné skladby iTunes z počítače
Odstraňte tyto nechtěné skladby iTunes z počítače

Hej, dámy a pánové, toto je můj první instrukční kód, takže prosím při komentování nechte své zbraně doma (nože jsou však přijatelné). S příchodem přehrávačů mp3 bylo lidem umožněno nosit nebývalé částky hudby kolem s nimi v kapse. Není neobvyklé slyšet o lidech, kteří mají sbírky 5, 10, dokonce 15 tisíc písniček (a někteří lidé i více). Z přehrávačů mp3 není žádný populárnější než iPod od společnosti Apple a software, který jej spouští, iTunes. S tak velkými hudebními knihovnami však může být poněkud únavné zbavit se skladeb, které jednoduše nezní dobře nebo lákavě. ty už. Může trvat věky, než se můžete procházet skladbou po skladbě v iTunes a zbavit se skladeb, které se vám nelíbí. V tom přichází instruktáž. V této instruktáži vám ukážu způsob, jak se automaticky zbavit skladeb které jsou prostě hrozné, s nějakou pomocí mého dobrého přítele, Perla. Dobrá základní znalost Perlu je nesmírně užitečná při pokusu o opakování tohoto instruktážního, i když není požadovaného (určitě byste mohli vzít hotový kódový produkt a zkopírovat/vložit a bude to fungovat dobře). Pro zájemce o Perl vřele doporučuji knihu „Learning Perl“od O'Reillyho, je to dobré čtení a jedna z nejlépe napsaných knih o Perlu, kterou jsem měl možnost přečíst. DŮLEŽITÉ: I když zde uvedené metody budou fungovat pokud to uděláte správně, nemohu a jednoduše nepřijmu žádnou odpovědnost, pokud uděláte něco hloupého a smažete své vzácné písně. Před pokusem o zápis nebo spuštění skriptu, jako je následující, důrazně zvažte zálohování hudebních souborů. Jen se mýlíte na straně opatrnosti, abychom se necítili zraněni, pokud ne, díky. Přečtěte si varování? (Ano, dokonce i vy, člověk, který si varování nepřečetl) Skvělé! Začněme:-) Aktualizace: Zdá se, že někteří skriptové perl při psaní skriptů iTunes tvrdě pracovali. Různé skripty související s iTunes najdete v Teridonových skriptech.

Krok 1: Začínáme

Začínáme
Začínáme

Jako u všech věcí, je tu malá příprava, kterou je třeba udělat, než budeme moci spustit tento skript. Věci, které budete potřebovat k automatickému mazání skladeb z iTunes: 1) Počítač (duh) 2) iTunes (double duh) 3) Perl (těžko spustit skript Perlu bez Perlu, co říkáte?) 4) Váš oblíbený editor (jsem zastáncem vi a vim sám, ale každý textový editor by to měl zvládnout) 5) iPod (není povinný, ale je hezké ho mít z důvodů, které budou brzy objasněny) Získání Perlu: Postupujte podle Zde by měly být dostatečně jednoduché pokyny: https://www.perl.com/download.csp Jakmile budete mít Perl stažený, nainstalovaný a připravený jít, budeme chtít nějaké základní informace o tom, co děláme. Je třeba poznamenat, že skript byl původně vyvinut pro Mac OS X, i když stejné metody by měly fungovat na operačních systémech, které nejsou založeny na Unixu, jako je Windows. Čas na nudnou, ehm, „vzdělávací“část Instructable.

Krok 2: Základní myšlenka skriptu

iTunes obsahuje 5hvězdičkový systém hodnocení, který uživatelům umožňuje hodnotit skladby. Písně s hodnocením 5 hvězdiček jsou považovány za nejlepší, zatímco skladby s hodnocením 1 hvězdičkou jsou považovány za jedny z nejhorších. Pro naše účely budeme předpokládat, že jakákoli skladba, která postrádá hodnocení (aka 0 hvězdiček), je taková, kterou uživatel dosud neměl možnost ohodnotit. Osobně při hodnocení skladeb, pokud má skladba hodnocení 1 hvězdičkou, zjistíte, že je pravděpodobně dost špatné, že si nezaslouží ten drahocenný prostor na pevném disku, který píseň zabírá. Proto skript Perl, který vám představím v tomto Instructable, bude analyzovat knihovnu iTunes a odstraní jakoukoli skladbu, které bylo přiřazeno hodnocení 1 hvězdičkou. Jako další bonus lze skladby hodnotit, když je uživatel na cestách pomocí iPodu. Tímto způsobem můžete vybrat skladby, které chcete odstranit, když jste na cestách, jednoduše je ohodnotit, a budou automaticky odstraněny při pozdější synchronizaci iPodu s počítačem (pokud svůj iPod synchronizujete automaticky s počítačem). Nyní víme, co děláme, uvidíme, jak budeme získávat informace o písních z iTunes pro skript Perl.

Krok 3: Knihovna XML: ITunes 'Goto Guy

Knihovna XML: ITunes 'Goto Guy
Knihovna XML: ITunes 'Goto Guy

Abychom mohli odstranit skladbu z počítače na základě jejího hodnocení, potřebujeme 2 informace: hodnocení skladby a umístění skladby. Naštěstí pro nás existuje šikovný soubor, ze kterého můžeme získat všechny informace, které jsme kdy o iTunes chtěli: soubor XML hudební knihovny iTunes. Soubor XML se nazývá „iTunes Music Library.xml“a měl by být umístěn ve vašem hudebním adresáři na vašem hlavním pevném disku.

O souboru XML: Soubor iTunes xml je druh databáze spravované iTunes a vždy aktuální. Když je v iTunes provedena úprava, odpovídající část souboru iTunes iTunes se upraví, aby byla tato změna zaznamenána. Níže je uveden ukázkový záznam z mého souboru iTunes ve formátu iTunes: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio file 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%Lder1 be Count1, soubor XML se skládá z hodnot obklopených značkami ve stylu HTML. Pro účely skriptu nás budou zajímat informace o stopách, jménu, umělci, hodnocení a umístění. Pokud se díváte na soubor XML, shora si můžete všimnout, že tato skladba má „hodnocení“40. iTunes každé skladbě přiřadí celé číslo v rozmezí od 0 do 100, přičemž každých 20 bodů je další hvězdička hodnocení. Hodnocení 20 tedy odpovídá hodnocení 1 hvězdička, hodnocení 40 je hodnocení 2 hvězdami atd., Přičemž 100 je hodnocení 5 hvězdiček. Nyní, když víme o souboru XML, začněme skriptovat

Krok 4: Váš přítel hash (i když nejste v Amsterdamu)

Váš přítel hash (i když nejste v Amsterdamu)
Váš přítel hash (i když nejste v Amsterdamu)

Než budeme moci odstranit soubory, potřebujeme funkční databázi, která spojuje všechny informace o skladbě dohromady. I když by mohly být použity sofistikovanější datové struktury, jako je pole hash nebo hash hash, tento skript je natolik jednoduchý, že si zaslouží použití jednoduchého seznamu hashů. Pro nezasvěcené hash není nic jiného než pole, které je indexováno řetězci nebo směsicí párů klíč/hodnota. Člověk si může představovat hash jako velký sud s věcmi (hodnotami) a všechno v metaforickém sudu má připojenou značku (klíče). Libovolnou položku v sudu můžete vytáhnout jednoduše tak, že najdete její značku. Pro více informací o hashe může být užitečný následující odkaz: https://www.tutorialspoint.com/perl/perl_hashes.htmMůžeme použít informaci, že každé skladbě v souboru XML iTunes je přiřazeno jedinečné ID stopy pro sledování písničky. Z tohoto důvodu je trackID ideálním klíčem pro hashe. Můžeme tedy nastavit 4 hashe pro název písně, umělce, hodnocení a umístění. Jakmile jsou vytvořeny, můžeme prohledat soubor a naplnit naši databázi hash pomocí několika jednoduchých regulárních výrazů, které se zobrazí dále.

Krok 5: (Velmi) krátká lekce regulárních výrazů

Abychom získali naše položky hash ze souboru XML a také ušetřili trochu času při hledání, budeme chtít zavolat na pomoc jednu z výkonnějších funkcí Perlu: regulární výraz. Udělám velmi krátkou lekci regulárních výrazů, ale pro ty z vás, kteří chtějí podrobnější vysvětlení, je na internetu spousta dobrých návodů k regulárnímu výrazu. Podívejte se na https://perldoc.perl.org/perlretut.html na dobrý návod k pravidelnému výrazu. Stručně řečeno, regulární výrazy nám poskytují sadu nástrojů pro procházení řetězců, nahrazení jednoho řetězce jiným řetězcem nebo ukládání částí řetězec pro pozdější použití. Regulární výrazy poskytují 2 funkce, odpovídající (m //) a náhradní (s //) operátory, které budou použity pro tento projekt. Chcete -li použít některou z těchto funkcí v kontextu přiřazení, použijeme operátor vazby Perl (= ~), který se používá k navázání vzoru na vybranou řetězcovou proměnnou. Příklady:

$ comment = ~ /Purduecer /; #returns true if $ comment string contains phrase "Purduecer" s/[a-z]/[A-Z]/; #vezměte všechna malá písmena do řetězce a použijte velká písmena v řetězci $ _Druhou užitečnou vlastností regulárních výrazů jsou paměťové proměnné. V regulárních výrazech můžete umístit určité položky do závorek a poté pomocí speciálních proměnných paměti shody vzorů $ 1, $ 2 atd. Přistupovat k částem řetězců, které odpovídaly těmto částem později.

/(Instructables) Robot/; #Srovnejte libovolný řádek s frází „Robot Instructables“$ web = $ 1; #Uložit výsledek úspěšné shody vzorů obsažený v první sadě parenů #(v tomto případě proměnná $ 1 obsahuje „Instructables“)Nakonec v regulárních výrazech existují určité znaky, které slouží zvláštnímu účelu. Jedná se o úniky zpětného lomítka (všechny by měly programátorům C vypadat dobře), třídy znaků a metaznaky. Mohli bychom například říci, aby se shodovalo s libovolným písmenem, které má na obou stranách záložku

/\ t [a-zA-Z] t/Tyto hranaté závorky se používají v regulárních výrazech k definování třídy znaků. Předpokládejme však, že bychom chtěli v řádku najít text uzavřený do hranatých závorek. Nemohli jsme to jednoduše napsat tak, jak je, jak je ukázáno níže

/

/

Krok 6: Použití regulárních výrazů na skript ITunes

Použití regulárních výrazů na skript ITunes
Použití regulárních výrazů na skript ITunes

Nyní, když doufáme, že máme ponětí o základních základních pojmech, které pohánějí regulární výrazy, je čas je použít na skript iTunes. Při čtení kódu xml se s určitými znaky, jako je například lomítko, setkáváme poměrně často. Využijeme tedy skutečnosti, že operátor m // vám umožní vybrat v kódu libovolné oddělovače (použijeme hranaté závorky, i když jiné oddělovače určitě budou fungovat) Nejprve si musíme přečíst pouze část celý soubor iTunes iTunes. Části souboru obsahující informace, jako jsou seznamy skladeb atd., Nejsou nutné. První řádek sekce seznamů skladeb, který následuje po informacích o skladbě, vypadá následovně: Seznamy skladeb Proto v cyklu za chvíli můžeme přidat příkaz, který přeskočí na konec čtení souboru, pokud se s tímto řádkem setká.

while () {#loop_instructions_here last if ($ _ = ~ m [Playlists])}Dále k vytvoření ID hash můžeme použít strom if-elsif k vytváření hashů naší databáze, pomocí proměnných shody paměti, o kterých jsme se dozvěděli v předchozím kroku, uložit hodnoty do hashů

if ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Hodnocení (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Jméno (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artist (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Nyní, když jsme vytvořili základ naší hash databáze, se budeme zabývat vyhledáváním a odstraňováním souborů 1-Star, takže pokračujte dalším krokem!

Krok 7: Vyhledání a odstranění těchto 1hvězdičkových skladeb

Vyhledání a odstranění těchto 1hvězdičkových skladeb
Vyhledání a odstranění těchto 1hvězdičkových skladeb

Nyní, když máme naši databázi nastavenou, je čas hledat 1-hvězdičkové stopy, abychom je mohli odstranit. Perl poskytuje užitečnou smyčkovou konstrukci nazývanou smyčka foreach, kterou lze použít k iteraci všech klíčů našich hashů. Je třeba poznamenat, že ne každá stopa ve vaší knihovně iTunes bude obsahovat záznam v hashování hodnocení. Důvodem je, že skladbám, které nemají hodnocení, není v souboru iTunes iTunes uveden řádek s hodnocením skladeb. Proto při smyčce skrz hashe budeme chtít použít následující konstrukci:

foreach $ id (třídicí klíče %rate_hash) { #… sem vložte smyčkový kód}Poté je to stejně jednoduché jako použití následujícího příkazu

odpojit $ loc_hash {$ id}, pokud $ rate_hash {$ id} == 20;Funkce odpojení použitá ve výše uvedeném ukázkovém kódu je způsob odstraňování souborů Perlem. Můžete být v pokušení použít systémové volání funkce odstranění vašeho operačního systému, ale z důvodů přenositelnosti kód, který jsem napsal, nepoužívá systémové volání. Nyní máme základní strukturu pro náš kód. V následujících krocích provedeme některá vylepšení kódu, abyste měli k dispozici plnohodnotný funkční skript, který vás zbaví těch otravných 1 hvězdiček.

Krok 8: URI uniká a jak se s nimi dostat

Pokud se pokusíte spustit skript tak, jak je, narazíte na mnoho chyb ve vašem operačním systému a pokud se podíváte na cesty k souborům, které se pokoušíte odstranit, můžete v cestách, které jsou nežádoucí, vloženy neobvyklé znaky. Je docela pravděpodobné, že tyto cesty obsahují únikové znaky URI. Co jsou úniky URI? V HTML a XML jsou únikové znaky URI (aka úniky URI) speciální metaznaky používané k hledání doslovných instancí tohoto znaku. Například v řetězci znaků XML nikdy neuvidíte jednoduché mezery. Uvidíte však XML reprezentaci jednoduchého mezer, %20. (Určitě jste je viděli v řádku s adresou URL ve svém prohlížeči a zajímalo vás, co to je. No, teď to víte) Únik URI se skládá ze znaku % následovaného 2místným hexadecimálním kódem představujícím hodnotu ASCII postavy. bod, na hash umístění byste mohli napsat celou řadu příkazů nahrazení, které nahradí všechny možné metaznaky, se kterými se setkáte (tj. $ loc_hash {$ id} = ~ s/%20//; a tak dále). Naštěstí však Perl poskytuje lepší způsob, jak se o tyto věci starat. Perl je dodáván s modulem s názvem URI:: Escape, který má vestavěnou funkci uri_unescape, která nám pomůže odstranit úniky URI. Chcete -li modul použít, jednoduše přidejte následující řádek do horní části kódu:

použít URI:: Escape;Nyní, když ve smyčce souborů XML přiřadíme pole $ loc_hash {$ id}, můžeme poté přidat následující řádek

uri_unescape ($ loc_hash {$ id});Výše uvedený řádek automaticky eliminuje všechny únikové znaky URI. Jako bonus navíc překládá i některé mezinárodní postavy. Spustil jsem skript s několika cestami souborů, které obsahovaly japonské konji, a funkce uri_unescape přeložila formáty XML těchto znaků do jejich původních znaků, takže unlink mohl úspěšně odstranit soubor. Než budeme pokračovat, je třeba udělat ještě jeden krok. Z důvodů, kterým úplně nerozumím, iTunes kóduje symbol ampersand (&) jako & ve svých řetězcích. Pokud někdo ví, proč tomu tak je, dejte mi prosím vědět. Do té doby tento problém odstraníme přidáním následujícího řádku pod řádek uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;Nyní bude mít skript cesty k souborům bez zvláštních znaků a funkce odpojení bude moci najít soubory na správných místech a odstranit je. Bude to, pokud používáte Mac OSX (a pravděpodobně také většinu ostatních OS založených na Unixu). Přečtěte si o tom, jak zajistit, aby byl skript kompatibilní s jinými operačními systémy (konkrétně Windows).

Krok 9: Přidání kompatibility skriptů do systému Windows

Přidání kompatibility skriptů se systémem Windows
Přidání kompatibility skriptů se systémem Windows

Skript, jak byl dosud napsán, efektivně odstraňuje stopy v operačních systémech založených na Unixu. Aby to fungovalo v systému Windows, je potřeba jedno drobné doplnění. Na rozdíl od počítačů Mac a jiných unixových operačních systémů Windows nepodporuje koncept jediného kořenového adresáře. Proto všechny názvy cest začínají svazkem (C: nebo E: nebo jakýmkoli jiným písmenem, které vás napadne) na rozdíl od kořenového adresáře (/). Naštěstí pro nás má Perl speciální proměnnou $O (to je velké o, ne nula), to nám říká, jaký operační systém aktuálně používáme. Pokud tedy hodnota uložená v této proměnné obsahuje „Win“, budeme chtít odstranit úvodní lomítko na naší cestě k umístění souboru XML. To lze provést pomocí následujícího řádku kódu (přidaného poté, co úspěšně analyzujeme umístění stopy ze souboru XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) if $^O = ~ /Win /i;Nyní bude skript fungovat, ať už je spuštěn na OS X nebo Windows.

Krok 10: Dokončený skript

Dokončený skript
Dokončený skript

V příloze je moje verze vyplněného skriptu pro automatické vytváření iTunes pro ty z vás, kteří chtěli jen konečný produkt, a ne vysvětlení, jak funguje.

Chcete -li použít skript, budete chtít soubor uložit jako soubor perl (přípona.pl) a poté jej spustit (chmod 751 v Unixu, nevíte, co to je pro systémy Windows).

Doporučuje: