Оглавление:

Удалите ненужные песни ITunes с вашего компьютера: 10 шагов
Удалите ненужные песни ITunes с вашего компьютера: 10 шагов

Видео: Удалите ненужные песни ITunes с вашего компьютера: 10 шагов

Видео: Удалите ненужные песни ITunes с вашего компьютера: 10 шагов
Видео: ПОЛНОЕ УДАЛЕНИЕ iTunes на Windows 10 2024, Ноябрь
Anonim
Удалите ненужные песни ITunes со своего компьютера
Удалите ненужные песни ITunes со своего компьютера

Привет, дамы и господа, это моя первая инструкция по программированию, поэтому, комментируя, оставьте свое оружие дома (однако можно использовать ножи). С появлением mp3-плееров люди стали носить с собой беспрецедентные количества музыки с ними в карманах. Нередко можно услышать, что у людей есть сборники из 5, 10, даже 15 тысяч песен (а у некоторых и больше). Среди mp3-плееров нет ни одного более популярного, чем Apple iPod и программное обеспечение, которое его запускает, iTunes. Однако с такими большими музыкальными библиотеками может стать несколько утомительным избавление от песен, которые просто не звучат хорошо или не привлекают тебя больше нет. Чтобы просмотреть вашу музыкальную коллекцию в iTunes и избавиться от песен, которые вам не нравятся, может потребоваться целая вечность. Вот здесь-то и пригодится эта инструкция. В этой инструкции я покажу вам способ автоматически избавляться от песен. которые просто ужасны, с некоторой помощью моего хорошего друга, Perl. Хорошие базовые знания Perl чрезвычайно полезны при попытке повторить эти инструкции, хотя и не требуются (вы, конечно, можете просто взять готовый код продукта и скопировать / вставить он будет работать нормально). Тем, кто интересуется Perl, я настоятельно рекомендую книгу «Learning Perl» от O'Reilly, это хорошее прочтение и одна из лучших написанных книг по Perl, которые мне довелось прочитать. ВАЖНО: Хотя методы, представленные здесь, будут работать. Если все сделано правильно, я не могу и просто не буду брать на себя ответственность, если вы сделаете что-нибудь глупое и удалите свои драгоценные песни. Пожалуйста, внимательно рассмотрите возможность резервного копирования ваших музыкальных файлов, прежде чем пытаться написать или выполнить сценарий, подобный следующему. Просто проявите осторожность, чтобы не обидеться, если вы этого не сделаете, спасибо. Прочитать предупреждение? (Да, даже ты, человек, не прочитавший предупреждение) Отлично! Приступим:-) Обновление: похоже, некоторые разработчики сценариев Perl усердно работали над написанием сценариев iTunes. Чтобы узнать о различных сценариях, связанных с iTunes, ознакомьтесь с сценариями Teridon's Scripts.

Шаг 1. Начало работы

Начиная
Начиная

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

Шаг 2: основная идея сценария

iTunes включает 5-звездочную систему оценки, позволяющую пользователям оценивать песни. Песни с рейтингом 5 звезд считаются лучшими песнями, а песни с рейтингом 1 звезда считаются одними из худших. Для наших целей мы будем предполагать, что любая песня, не имеющая рейтинга (иначе говоря, 0 звезд), - это песня, которую пользователь еще не имел возможности оценить. Лично при оценке песен, если песня имеет рейтинг в 1 звезду, я обнаружите, что это, вероятно, достаточно плохо, что оно не заслуживает драгоценного места на жестком диске, которое занимает песня. Таким образом, Perl-скрипт, который я представлю вам в этой инструкции, проанализирует библиотеку iTunes и удалит все треки, которым был присвоен рейтинг в 1 звезду. В качестве дополнительного бонуса песни можно оценивать, пока пользователь находится в пути. с помощью iPod. Таким образом, вы можете выбрать песни для удаления в дороге, просто оценив их, и они будут автоматически удалены, когда вы позже синхронизируете свой iPod с компьютером (если вы автоматически синхронизируете свой iPod с компьютером). Теперь мы знаем, что мы делаем, давайте посмотрим, как мы собираемся извлекать информацию о песнях из iTunes для Perl Script.

Шаг 3. Библиотека XML: Goto Guy из ITunes

Библиотека XML: Goto Guy из ITunes
Библиотека XML: Goto Guy из ITunes

Чтобы удалить песню с компьютера на основе ее рейтинга, нам требуются 2 части информации: рейтинг песни и расположение песни. К счастью для нас, есть удобный файл, из которого мы можем получить всю необходимую информацию об iTunes: XML-файл iTunes Music Library. Файл XML называется «iTunes Music Library.xml» и должен находиться в каталоге «Музыка» на основном жестком диске.

О XML-файле: XML-файл iTunes - это своего рода база данных, поддерживаемая iTunes и постоянно обновляемая. Когда в iTunes вносятся изменения, соответствующая часть XML-файла iTunes изменяется, чтобы отметить это изменение. Пример записи из моего XML-файла iTunes приведен ниже: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02: 11: 30ZDate Added2008-05-28T05: 00: 24ZBit Rate10018-32Sample RatePlay Rate10018-328 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20OnL20Me может быть видно из записи. XML-файл состоит из значений, окруженных тегами в стиле HTML. Для целей сценария нас будут интересовать биты информации о треке, имени, исполнителе, рейтинге и местонахождении. Если вы просматриваете XML-файл, вы можете заметить сверху, что эта песня имеет «рейтинг» 40. iTunes присваивает каждой песне целое число в диапазоне от 0 до 100, причем каждые 20 баллов являются дополнительной звездочкой для оценки. Таким образом, оценка 20 соответствует оценке в 1 звезду, оценка 40 - оценке в 2 звезды и так далее, при этом 100 - оценке в 5 звезд. Итак, теперь, когда мы знаем о XML-файле, приступим к написанию сценариев.

Шаг 4. Ваш друг - хеш (даже если вы не в Амстердаме)

Ваш друг хеш (даже если вы не в Амстердаме)
Ваш друг хеш (даже если вы не в Амстердаме)

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

Шаг 5: (очень) краткий урок регулярных выражений

Чтобы получить наши хеш-записи из XML-файла, а также сэкономить немного времени на поиске, нам понадобится помощь одной из наиболее мощных функций Perl: регулярного выражения. Я проведу очень краткий урок по регулярным выражениям, но для тех из вас, кто хочет более подробных объяснений, есть много хороших руководств по регулярным выражениям в Интернете. Посетите https://perldoc.perl.org/perlretut.html, чтобы получить хорошее руководство по регулярным выражениям. Короче говоря, регулярные выражения предоставляют нам набор инструментов для просмотра строк, замены одной строки другой строкой или сохранения частей строка для последующего использования. Регулярные выражения предоставляют 2 функции, операторы сопоставления (m //) и замены (s //), которые будут использоваться в этом проекте. Чтобы использовать любую из этих функций в контексте присваивания, мы будем использовать оператор привязки Perl (= ~), который используется для привязки шаблона к выбранной строковой переменной. Примеры:

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

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

/ / t [a-zA-Z] t /Эти квадратные скобки используются в регулярных выражениях для определения класса символов. Однако предположим, что мы хотим найти в строке текст, заключенный в квадратные скобки. Мы не могли просто написать это как есть, как показано ниже

/

/

Шаг 6. Применение регулярных выражений к сценарию ITunes

Применение регулярных выражений к сценарию ITunes
Применение регулярных выражений к сценарию ITunes

Теперь, когда у нас есть некоторое представление об основных концепциях, лежащих в основе регулярных выражений, пора применить их к сценарию iTunes. При чтении кода xml некоторые символы, такие как косая черта, встречаются довольно часто. Поэтому мы воспользуемся тем фактом, что оператор m // позволяет вам выбирать любые разделители, которые вы хотите в коде (мы будем использовать квадратные скобки, хотя другие разделители, безусловно, будут работать). Во-первых, нам нужно прочитать только часть полный XML-файл iTunes. Части файла, содержащие такую информацию, как списки воспроизведения и т. Д., Не требуются. Первая строка раздела списков воспроизведения, которая идет после информации о песне, выглядит следующим образом: Списки воспроизведения Таким образом, в цикле while мы можем добавить оператор, который переходит в конец чтения файла, если эта строка встречается.

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

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

Шаг 7. Поиск и удаление треков, отмеченных одной звездой

Поиск и удаление треков с одной звездой
Поиск и удаление треков с одной звездой

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

foreach $ id (ключи сортировки% rate_hash) {#… вставьте сюда код цикла}После этого это так же просто, как использовать следующий оператор

отключите $ loc_hash {$ id}, если $ rate_hash {$ id} == 20;Функция unlink, использованная в приведенном выше примере кода, представляет собой способ удаления файлов в Perl. У вас может возникнуть соблазн использовать системный вызов функции удаления вашей операционной системы, но из соображений переносимости написанный мной код не использует системный вызов. Теперь у нас есть базовая структура для нашего кода. На следующих этапах мы внесем некоторые улучшения в код, чтобы у вас был полнофункциональный функциональный сценарий, позволяющий избавиться от этих надоедливых 1-звездочек.

Шаг 8: Escape URI и как их обойти

Если вы попытаетесь запустить сценарий как есть, вы столкнетесь с многочисленными ошибками в вашей операционной системе, и если вы посмотрите на пути к файлам, которые вы пытаетесь удалить, вы можете обнаружить необычные символы, встроенные в пути, которые нежелательны. Вполне вероятно, что эти пути содержат escape-символы URI. Что такое escape-символы URI? В HTML и XML escape-символы URI (также известные как escape-символы URI) - это специальные метасимволы, используемые для поиска буквальных экземпляров этого символа. Например, вы никогда не увидите простого пробела в строке символов XML. Однако вы увидите XML-представление простого пробела% 20. (Наверняка вы видели их в строке URL-адреса в своем браузере и задавались вопросом, что это такое. Что ж, теперь вы знаете) Escape URI состоит из знака%, за которым следует двухзначный шестнадцатеричный код, представляющий значение ASCII символа. Вы можете написать целую кучу операторов replace в хэше местоположения, чтобы заменить все возможные метасимволы, с которыми вы сталкиваетесь (например, $ loc_hash {$ id} = ~ s /% 20 / /; и так далее). К счастью, Perl предоставляет лучший способ позаботиться об этих вещах. Perl поставляется в комплекте с модулем URI:: Escape, который имеет встроенную функцию uri_unescape, которая будет выполнять работу по устранению escape-символов URI за нас.. Чтобы использовать модуль, просто добавьте следующую строку в верхней части кода:

используйте URI:: Escape;Теперь, после того как мы назначили массив $ loc_hash {$ id} в цикле XML-файла, мы можем впоследствии добавить следующую строку

uri_unescape ($ loc_hash {$ id});Вышеупомянутая строка автоматически удаляет все escape-символы URI. В качестве дополнительного бонуса он также переводит некоторые международные символы. Я запустил сценарий с несколькими путями к файлам, в которых были японские конжи, и функция uri_unescape преобразовала форматы XML этих символов в их исходные символы, чтобы unlink мог успешно удалить файл. Прежде чем мы продолжим, необходимо сделать еще один шаг. По причинам, которые я не совсем понимаю, 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).

Рекомендуемые: