Съдържание:

Изтрийте тези нежелани песни от ITunes от компютъра си: 10 стъпки
Изтрийте тези нежелани песни от ITunes от компютъра си: 10 стъпки

Видео: Изтрийте тези нежелани песни от ITunes от компютъра си: 10 стъпки

Видео: Изтрийте тези нежелани песни от ITunes от компютъра си: 10 стъпки
Видео: ИЗЧИСТВАНЕ НА ТЕМПЕР ФАЙЛОВЕТЕ ОТ АРХИВИТЕ, КОИТО БАВЯТ КОМПЮТЪРЪТ НИ/WINDOWS 8.1 & WINDOWS 10 2024, Юли
Anonim
Изтрийте тези нежелани песни от ITunes от компютъра си
Изтрийте тези нежелани песни от ITunes от компютъра си

Здравейте, дами и господа, това е първото ми инструктиране за кодиране, така че, моля, когато коментирате, оставете оръжията си вкъщи (ножовете обаче са приемливи). С появата на mp3 плейърите стана възможно хората да носят безпрецедентни количества музика наоколо с тях в джобовете. Не е необичайно да чуете хора, които имат колекции от 5, 10, дори 15 хиляди песни (а някои хора, дори повече). От mp3 плейърите никой не е по -популярен от iPod на Apple и софтуера, който го управлява, iTunes. С такива големи музикални библиотеки обаче може да стане малко досадно да се отървете от песните, които просто не звучат добре или са привлекателни ти вече. Може да отнеме векове, за да преминете песен по песен през вашата музикална колекция в iTunes и да се отървете от песните, които не ви харесват. Ето къде идва тази инструкция. В тази инструкция ще ви покажа начин автоматично да се отървете от песните които са просто ужасни, с помощта на моя добър приятел, Perl. Добрите основни познания за Perl са изключително полезни, когато се опитвате да повторите тази инструкция, макар и да не се изискват (със сигурност можете просто да вземете готовия код и да копирате/поставите и ще работи добре). За тези, които се интересуват от Perl, горещо препоръчвам книгата "Learning Perl" от O'Reilly, тя е добро четиво и една от най -добре написаните книги за Perl, които съм имал възможност да прочета. ВАЖНО: Въпреки че методите, представени тук, ще работят ако е направено правилно, не мога и просто няма да поема никаква отговорност, ако направите нещо глупаво и изтриете ценните си песни. Моля, обмислете силно архивирането на вашите музикални файлове, преди да опитате да напишете или изпълните скрипт, като следния. Просто сгрешете от страна на предпазливостта, за да нямаме наранени чувства, ако не го направите, благодаря. Прочетете предупреждението? (Да, дори и вие, човек, който не е прочел предупреждението) Страхотно! Нека започнем:-) Актуализация: Изглежда някои скриптове на Perl са работили усилено при писането на скриптове на iTunes. За разнообразие от скриптове, свързани с iTunes, проверете скриптовете на Teridon.

Стъпка 1: Първи стъпки

Приготвяме се да започнем
Приготвяме се да започнем

Както при всички неща, има малко подготовка, която трябва да се направи, преди да можем да изпълним този скрипт. И така, неща, които ще ви трябват за автоматично изтриване на песни от iTunes: 1) Компютър (duh) 2) iTunes (double duh) 3) Perl (трудно е да стартирате Perl скрипт без Perl, не бихте ли казали?) 4) Вашият любим редактор (сам съм привърженик на vi и vim, но всеки текстов редактор трябва да свърши работа) 5) iPod (не е задължителен, но е хубаво да има по причини, които ще бъдат изяснени скоро) Получаване на Perl: Следвайте инструкциите тук трябва да са достатъчно прости: https://www.perl.com/download.csp След като сте изтеглили, инсталирали и готови за работа Perl, ще искаме информация за това какво правим. Трябва да се отбележи, че първоначално скриптът е разработен за Mac OS X, въпреки че същите методи трябва да работят и на не-Unix базирани операционни системи като Windows. Време е за скучната, ъ -ъ, „образователна“част от Instructable.

Стъпка 2: Основната идея за скрипт

iTunes включва 5-звездна система за оценяване, която позволява на потребителите да оценяват песни. Песните с 5-звезден рейтинг се считат за най-добрите песни, докато песните с 1-звезден рейтинг се смятат за едни от най-лошите песни. За нашите цели ще приемем, че всяка песен, която няма рейтинг (известна още с 0 звезди), е тази, която потребителят все още не е имал възможност да оцени. установих, че вероятно е достатъчно лошо, че не заслужава ценното място на твърдия диск, което песента заема. Следователно скриптът на Perl, който ще ви представя в тази инструкция, ще анализира библиотеката на iTunes и ще изтрие всяка песен, на която е дадена оценка с 1 звезда. Като допълнителен бонус, песните могат да бъдат оценени, докато потребителят е в движение използване на iPod. По този начин можете да избирате песни за изтриване, докато сте в движение, просто като ги оцените и те ще бъдат автоматично изтрити, когато синхронизирате вашия iPod с компютъра си по -късно (ако автоматично синхронизирате вашия iPod с вашия компютър). Сега, когато знаем какво правим, нека видим как ще изтеглим информацията за песента от iTunes за Perl Script.

Стъпка 3: XML библиотеката: GoTouy на ITunes

Библиотеката на XML: „Goto Guy“на ITunes
Библиотеката на XML: „Goto Guy“на ITunes

За да изтрием песен от компютъра въз основа на нейния рейтинг, се нуждаем от 2 части информация: рейтинг на песента и местоположението на песента. За щастие за нас има удобен файл, от който можем да получим цялата информация, която някога сме искали за iTunes: XML файлът на iTunes Music Library. XML файлът се нарича „iTunes Music Library.xml“и трябва да се намира във вашата музикална директория на основния ви твърд диск.

Относно XML файла: iTunes xml файлът е вид база данни, поддържана от iTunes, и винаги поддържана актуална. Когато се направи промяна в iTunes, съответната част от iTunes XML файла се променя, за да отбележи тази промяна. Примерен запис от моя iTunes XML файл е даден по-долу: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG аудио файлРазмер3682382Общо време230138Дата на промяна2007-09-24T02: 11: 30ZДата добавена2008-05-28T05S01PPPPP18 25T01: 26: 58Z Класиране40Оценка на албума XML файлът се състои от стойности, заобиколени от тагове в стил HTML. За целите на скрипта ще се интересуваме от бита с информация за ID на песента, име, изпълнител, рейтинг и местоположение. Ако разглеждате XML файла, може да забележите отгоре, че тази песен има „рейтинг“от 40. iTunes присвоява на всяка песен цяло число, вариращо от 0 до 100, като всеки 20 точки са допълнителна звезда за оценката. Така че оценка 20 съответства на 1 звезда, оценка 40 е 2 звезди и т.н., като 100 е 5 звезди. Така че сега, когато знаем за XML файла, нека започнем скриптове

Стъпка 4: Вашият приятел е хаш (дори и да не сте в Амстердам)

Вашият приятел хаш (дори и да не сте в Амстердам)
Вашият приятел хаш (дори и да не сте в Амстердам)

Преди да можем да премахнем файловете, имаме нужда от работеща база данни, която свързва цялата информация за песента заедно. Докато могат да се използват по -сложни структури от данни, като масив от хешове или хеш от хешове, този скрипт е достатъчно прост, за да заслужи използването на прост списък от хешове. се индексира чрез низове или объркана маса от двойки ключ/стойност. Човек може да мисли за хеш като голяма бъчва с неща (стойностите) в нея, а всичко в метафоричната цев има прикрепен етикет (ключовете). Можете да извадите всеки елемент от цевта, просто като намерите етикета му. За повече информация относно хешовете може да бъде полезна следната връзка: https://www.tutorialspoint.com/perl/perl_hashes.htm Можем да използваме информацията, че на всяка песен в iTunes XML файла е присвоен уникален идентификационен номер, за да се следи песните. Поради това trackID прави идеален ключ за хешовете. Следователно можем да настроим 4 хеша за заглавие на песен, изпълнител, рейтинг и местоположение. След като те бъдат установени, можем да сканираме файла и да попълним нашата хеш база данни, използвайки някои прости регулярни изрази, които ще бъдат показани по -нататък.

Стъпка 5: (Много) кратък урок за редовните изрази

За да вземем нашите хеш записи от XML файла и също така да спестим малко време за търсене, ще искаме да се обърнем към помощта на една от по -мощните функции на Perl: регулярния израз. Ще направя един много кратък урок по регулярните изрази, но за тези от вас, които искат по -подробни обяснения, има много добри уроци за регулярни изрази онлайн. Вижте https://perldoc.perl.org/perlretut.html за добър урок за регулярни изрази. Накратко, регулярните изрази ни предоставят набор от инструменти за преминаване през низове, замяна на един низ с друг низ или запазване на части от низ за по -късна употреба. Регулярните изрази осигуряват 2 функции, операторите за съвпадение (m //) и замяна (s //), които ще бъдат използвани за този проект. За да използваме някоя от тези функции в контекста на присвояване, ще използваме оператора за свързване на Perl (= ~), който се използва за свързване на модел към низ от променлива по избор.

$ коментар = ~ /Purduecer /; #връща true, ако $ comment string съдържа фраза "Purduecer" s/[a-z]/[A-Z]/; #вземете всички малки букви в низ и ги изписвайте с главни букви в $ _ низВтора полезна характеристика на регулярните изрази е тази на променливите в паметта. В регулярни изрази можете да поставите определени елементи в скоби и след това да използвате специалните променливи на паметта за съвпадение на шаблони $ 1, $ 2 и т.н., за да получите достъп до частите от низовете, които съответстват на тези части по -късно.

/(Инструктивни) Робот/; #Съпоставете всеки ред с фразата "Instructables Robot" $ уебсайт = $ 1; #Запазване на резултата от успешното съвпадение на шаблона, съдържащо се в първия набор от скоби #(в този случай променливата $ 1 съдържа "Instructables")И накрая, в регулярните изрази има определени знаци, които служат за специална цел. Това са бягства от обратна наклонена черта (всички те трябва да изглеждат познати на програмистите на C), класове символи и метасимволи. Например, за да съответства на всяка една буква, която има раздел от двете страни, бихме могли да кажем

/\ t [a-zA-Z] t/Тези квадратни скоби се използват в регулярни изрази за определяне на клас знаци. Да предположим обаче, че искаме да намерим текст, затворен в квадратни скоби в реда. Не можем просто да го напишем такъв, какъвто е показан по -долу

/

/

Стъпка 6: Прилагане на регулярни изрази към скрипта на ITunes

Прилагане на регулярни изрази към скрипта на ITunes
Прилагане на регулярни изрази към скрипта на ITunes

Надяваме се, че имаме представа за основните концепции, задвижващи регулярните изрази, че е време да ги приложим към скрипта на iTunes. Когато четете xml код, някои символи, като наклонена черта напред, се срещат доста често. Затова ще се възползваме от факта, че операторът m // ви позволява да изберете каквито и да е разделители, които искате в кода (ще използваме квадратни скоби, въпреки че други разделители със сигурност ще работят) Първо, трябва само да прочетем част от пълният iTunes XML файл. Части от файла, съдържащи информация, като плейлисти и т.н., не са необходими. Първият ред в секцията за плейлисти, който идва след информацията за песента, изглежда така: Плейлисти Следователно, след време в цикъл, можем да добавим изявление, което прескача до края на четенето на файла, ако се срещне този ред.

while () {#loop_instructions_here last if if ($ _ = ~ m [Плейлисти])}След това, за да изградим идентификаторите на хеш, можем да използваме дърво if-elsif за изграждане на нашите хешове на базата данни, като използваме променливите за съвпадение на паметта, за които научихме в предишната стъпка, за да запазим стойности в хешовете

ако ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Рейтинг (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Име (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Изпълнител (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Сега, когато сме изградили основата на нашата хеш база данни, ще обхванем намирането и премахването на файлове с 1 звезда, така че напред към следващата стъпка!

Стъпка 7: Намиране и изтриване на тези песни с 1 звезда

Намиране и изтриване на тези песни с 1 звезда
Намиране и изтриване на тези песни с 1 звезда

Сега, когато имаме изградена база данни, е време да потърсим 1-звездните песни, за да можем да ги изтрием. Perl предоставя полезна циклична конструкция, наречена foreach цикъл, която може да се използва за повторение на всички ключове на нашите хешове. Трябва да се отбележи, че не всеки запис във вашата iTunes библиотека ще има запис в хеша за рейтинги. Това е така, защото на песни, които нямат рейтинг, не се дава ред за оценка на песента в iTunes XML файла. Следователно при циклиране на хешовете ще искаме да използваме следната конструкция:

foreach $ id (ключове за сортиране %rate_hash) { #… вмъкнете цикличния код тук}След това е толкова просто, колкото да използвате следното изявление

прекратете връзката $ loc_hash {$ id}, ако $ rate_hash {$ id} == 20;Функцията за прекратяване на връзката, използвана в примерния код по -горе, е начинът на Perl за изтриване на файлове. Може да се изкушите да използвате системно обаждане до функцията за изтриване на вашата операционна система, но поради причини за преносимост кодът, който написах, не използва системното обаждане. Сега имаме основната структура за нашия код. В следващите стъпки ще направим някои подобрения на кода, за да можете да имате пълнофункционален, функционален скрипт, за да се отървете от тези досадни 1 звезди.

Стъпка 8: URI бягства и как да ги заобиколите

Ако се опитате да стартирате скрипта такъв, какъвто е, ще се сблъскате с многобройни грешки от вашата операционна система и ако погледнете файловите пътища, които се опитвате да изтриете, може да откриете необичайни символи, вградени в пътищата, които са нежелателни. Има доста голям шанс тези пътища да съдържат URI изходни символи. В HTML и XML, URI изходните знаци (известни още като URI бягания) са специални метасимволи, използвани за търсене на буквални екземпляри на този знак. Например, никога няма да видите просто бяло пространство в XML символен низ. Ще видите обаче XML представяне на просто бяло пространство, %20. (Със сигурност сте виждали тези в URL лентата в браузъра си и се чудите какви са те. Е, сега знаете) URI изходът се състои от знак %, последван от 2-цифрен шестнадесетичен код, представляващ ASCII стойността на знака. точка, можете да напишете цял куп заместващи изявления на хеша на местоположението, за да замените всеки възможен метасимвол, който срещнете (т.е. $ loc_hash {$ id} = ~ s/%20//; и т.н.). За щастие обаче, Perl предлага по-добър начин да се погрижим за тези неща. Perl идва в комплект с модул, наречен URI:: Escape, който има вградена функция uri_unescape, която ще свърши работата за премахване на URI избяга за нас. За да използвате модула, просто добавете следния ред в горната част на кода:

използвайте URI:: Escape;Сега, след като присвоим масива $ loc_hash {$ id} в XML файловия цикъл, можем да добавим следния ред след това

uri_unescape ($ loc_hash {$ id});Горният ред автоматично премахва всички изходни символи на URI. Като допълнителен бонус, той превежда и някои международни знаци. Пуснах скрипта с няколко пътеки на файлове, в които имаше японски конджи, а функцията uri_unescape преобразува XML форматите на тези знаци в техните оригинални знаци, така че прекратяването на връзката може успешно да изтрие файла. Преди да продължим, трябва да се направи една допълнителна стъпка. По причини, които не разбирам напълно, iTunes кодира символа амперсанд (&) като & в неговите низове. Ако някой знае защо е така, моля да ме уведоми. Междувременно премахваме този проблем, като добавяме следния ред под реда uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;Сега скриптът ще има файлови пътища, чисти от странни знаци, а функцията за прекъсване на връзката ще може да намери файлове на правилните им места, за да ги изтрие. Е, ще стане, ако използвате Mac OSX (а вероятно и повечето други базирани на Unix операционни системи). Прочетете, за да направите скрипта съвместим с други операционни системи (а именно Windows).

Стъпка 9: Добавяне на съвместимост на скриптове към Windows

Добавяне на съвместимост на скриптове към Windows
Добавяне на съвместимост на скриптове към Windows

Сценарият, както е написан досега, ефективно премахва записи в Unix-базирани операционни системи. За да работи в Windows, е необходимо едно незначително допълнение. За разлика от Mac и други базирани на Unix операционни системи, Windows не поддържа концепцията за една основна директория. Следователно всички имена на пътеки започват с том (C: или E: или всяка друга буква, за която се сетите), за разлика от основната директория (/). За щастие за нас, Perl има специална променлива, $O (това е главно o, а не нула), което ни казва каква операционна система използваме в момента. Така че, ако стойността, съхранена в тази променлива, съдържа "Win", ще искаме да премахнем водещата черта на нашия XML местоположение на файла. Това може да стане със следния ред код (добавен, след като успешно анализираме местоположението на песен от XML файла):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) ако $^O = ~ /Win /i;Сега скриптът ще работи независимо дали работи на OS X или Windows.

Стъпка 10: Завършеният скрипт

Завършеният скрипт
Завършеният скрипт

Приложена е моята версия на завършения скрипт за автоматично изтриване на iTunes за тези от вас, които просто са искали крайния продукт, а не обяснението как работи.

За да използвате скрипта, ще искате да запишете файла като perl файл (.pl разширение) и след това да го направите изпълним (chmod 751 в Unix, не сте сигурни какво е за системите на Windows).

Препоръчано: