Apple Music сломала мне жизнь

Представьте себе, что вы — представитель той немногочисленной прослойки пользователей iTunes, который держит свою медиатеку в идеальном состоянии. Каждому альбому в обязательном порядке присвоена обложка, все тэги дотошно прописаны, напротив тысяч композиций выставлен рейтинг, а количество вручную подобранных плейлистов перевалило за второй десяток. Для вас музыка — больше, чем просто набор байтов. Свою медиатеку вы накапливаете годами, покупая альбомы в iTunes Store или выискивая редкие записи на торрентах. А сами файлы хранятся не по уголкам жесткого диска, а в автоматически сгенерированной файловой библиотеке iTunes — разложены по папочкам и всегда под рукой.

И вот в одно прекрасное утро вы замечаете, что ваша замечательная медиатека больна. Да настолько больна, что с каждым мгновением желание пристрелить её (чтоб не мучалась) только увеличивается. Ведь перед глазами творится какой-то настоящий кошмар. Появляются несколько дубликатов одного и того же альбома, обложки полностью попутаны, плейлисты оказались наполнены совершенно произвольными песнями. Более того, при воспроизведении композиций их содержание полностью расходится с метаданными! «Нет, нет, это ведь Боб Дилан, а не Cage the Elephant!», крутится у вас в голове, но вы не можете ничего с этим поделать.

Именно это и произошло со мной. Разница только в том, что моя катастрофа не была спонтанной. Она возникла не сама по себе. Она возникла после обновления iTunes до долгожданной версии 12.2, которая принесла нам Apple Music и iCloud Music Library. Знали бы я и сотни (если не тысячи) других пользователей iTunes о том, что их ждёт, заранее — не делали бы резких движений. Однако кнопка «Включить Медиатеку iCloud» казалась достаточно безобидной на первый взгляд.

iTunes Library

iCloud по какой-то причине не справился с выгрузкой библиотеки в облако, и возле каждой песни поставил предупреждение о том, что, мол, данная композиция уже загружена в iCloud. Первое подозрение — подписка на iTunes Match, от которой я в конце прошлого года отказался. Возможно, по какой-то ошибке файлы всё ещё остались на сервере, и действия Apple Music вызвали какой-то конфликт. Множественные комментарии на форумах Apple подтверждают мою теорию, что с подобным ужасом столкнулись именно бывшие подписчики iTunes Match.

Впрочем, чисто внешне казалось, что вся неразбериха вызвана исключительно сбоем в работе самой программы — мол, попытка включить Медиатеку iCloud вызвала «линейный сдвиг» метаданных. Причем «под раздачу» попали записи, добавленные в iTunes одними из первых — что также выглядело странновато. Достаточно быстро в недрах файловой системы были найдены резервные копии непосредственно медиатеки iTunes в формате .itl — iTunes предусмотрительно делает сохранение перед каждым обновлением ПО. (резервные копии находятся по адресу C:\Users\\Music\iTunes\Previous iTunes Libraries)

iTunes .itl files

«Подставив» последний найденный .itl вместо текущей медиатеки, удалось вернуть iTunes к состоянию, в котором он находился до обновления. К сожалению, на этом мои мучения только начались. Оказалось, что пользуясь своей вседозволенностью в рамках каталога iTunes Media, iTunes подменил метаданные не только в своей базе данных, но и непосредственно в файлах. Более того, «исправленные» файлы он раскидал внутри своего каталога как душе угодно. Естественно, предыдущая версия базы данных оказалась обескуражена таким поворотом. Получалось, что при попытке воспроизвести некоторые песни, вылазила ошибка о том, что «Файл не найден».

Следующие абзацы описывают процесс «лечения» медиатеки в достаточно мелких технических деталях. Если вам это неинтересно — можете листать статью до следующего подобного предупреждения.

Да и как его вообще можно было найти? Битых песен оказалось несколько сотен, искать их всех вручную и переносить в первоначальное место (по пути так же вручную исправляя метаданные) — не вариант. Пользуясь золотым правилом «никто тебе не поможет, кроме тебя самого», решил воспользоваться языком программирования Python, крайне удобным для написания подобного рода скриптов. Основная задача стояла одна — вникнуть в организацию файла базы данных медиатеки iTunes и найти способ определить «прошлую жизнь» испорченного файла, чтобы потом вернуть его на место.

Подобная лазейка нашлась достаточно быстро. iTunes после запуска с новым .itl файлом автоматически генерирует XML документ, в котором и хранит информацию о своей медиатеке. В XML файле можно найти информацию о каждой отдельной композиции — название, альбом, исполнителя, жанр и так далее. Самым интересным полем оказалось «Persistent ID» — это кодовый набор букв и цифр, который присваивается файлу в момент добавления его в медиатеку и не меняется, что бы с ним не происходило. Именно по этому полю и можно было определить, что же за песня на самом деле находится перед нами. А учитывая, что в информации о песне также прописывалось её местонахождение, задача наконец-то стала полностью понятной и осязаемой.

код на Python

То есть, нужно было сравнить два XML файла — с правильной информацией и с неправильной информацией. В случае, если у песен с одинаковым Persistent ID расходится местоположение файла, нужно просто переместить его, попутно очистив его от метаданных — сам iTunes потом «подтянет» их из своей медиатеки.

Признаюсь, навыки разработки на Python у меня достаточно посредственные, поэтому для реализации этого простого алгоритма мне пришлось достаточно помучиться. При написании программы были задействованы встроенная библиотека plistlib (который превращает plist-XML в удобно отформатированный «dict») и внешняя библиотека mutagen (для работы с ID3-тегами и не только). В итоге разработка и отладка заняла у меня чуть более восьми часов, однако скрипт, полученный на выходе, делал именно то, чего я от него и ожидал.

Я не буду выкладывать скрипт в открытый доступ, так как для его функционирования нужны особые условия и я не могу гарантировать его работоспособность в каждом отдельном случае. Впрочем, если вы, как и я, столкнулись с описанной выше проблемой, обязательно свяжитесь со мной — я и код предоставлю, и расскажу, как им пользоваться. Актуальные контакты вы всегда найдёте в моём профиле.

На этом месте заканчиваются технические детали и продолжаются размышления о том, что «Apple уже не та»

После того, как моя музыка была почти полностью вылечена, я предпринял ещё одну попытку подключить iCloud Music Library — на этот раз предварительно её очистив. Не помогло. Снова предупреждение о «дубликатах», снова катастрофа с метаданными. Правда, во второй раз она уже столько ужаса не навела — буквально в два клика всё вернулось в исходное состояние. Однако после этого я окончательно решил, что Apple Music — не для меня, и пока её не починят, пользоваться ею просто невозможно.

Jony Ive пародия

Насколько я знаю, подобное уже происходило ранее — при запуске iTunes Match. Хорошо, что я не столкнулся с этим тогда. Но я уже предвкушаю ваши замечания о том, что «у всех всё нормально работает, а ты мне тут втираешь какую-то дичь». Так вот нет, не работает. Комментарии на форумах поддержки Apple, на MacRumors и ещё нескольких больших порталах показывают, что с такой проблемой столкнулись многие — и пускай на фоне миллионов пользователей Apple Music это лишь единицы. И этого Apple просто нельзя прощать — уже далеко не в первый раз компания лезет в пользовательские файлы и без предупреждения меняет то, что менять просто непозволительно.

Более того, после подобных проишествий доверие к Apple, итак пошатнувшееся после недавних событий, пропадает окончательно. В конце-концов, такого ужаса от компании, адепты которой щеголяют фразой «это просто работает», уж никак не ждешь.

dreymonde

Олег Дрейман

Журналист
Штатный журналист UiP. Ведёт рубрику «Во что поиграть на выходных». Обозревает свежие игровые новинки и пишет статьи на злободневные темы. Искренний поклонник Вселенной и ярый борец за права электронных книг. Продвигает 1 Second Everyday в массы.

Материалы

Нашел ошибку в тексте? Выдели ее и нажми Ctrl + Enter
  • 4tuneTeller

    Соболезную! Я пока еще Apple Music не включал, но у меня время от времени, почему-то, дублируются альбомы и исполнители в медиатеке и часть песен оказывается в одном дубле, а часть — в другом. Сильно раздражает!

    • Да, у меня бывало тоже самое. Решил проблему, пробив все поля «Сортировка».

  • А разъясните такой момент… Вот объединило мне iCloud с компа и телефона, т.е. я вижу с телефона всю свою музыку. В итоге, слушая ее на улице, то и дело плпадается что-то с общей библиотеки не скачанное, в итоге не играет, пытается подгружать ее, edge не хватает, затыкается. Как это исправить? Как сделать, чтоб играла только музыка скачанная на тел?

    • dreymonde

      В приложении «Музыка» есть тумблер «Только оффлайн». Поищите внимательнее, там где переключатель Артистов/Альбомов/Жанров и т.д.

  • У меня тоже музыка упорядочена, есть все обложки. А медиатека iCloud начала некоторые обложки менять на левые, что очень бесит.
    Кстати, а если включил медиатеку iCloud, как загрузить на телефон музыку, скачанную с нета, потому что ее нет в iTunes Store?

  • Pingback: Apple выпустила iOS 8.4.1 beta()

  • Пол терабайта музыки и вся она коту под хвост. От порезанных вен спасло то, что почти вся медиатека дублировалась на втором компьютере. Медиатеку восстановил, но даже после обновления на 12.2.1, при синхронизации с другими устройствами, осталась та же канитель с обложками и несоответствием названия и содержания. Причем на других уст-вах полностью снес старую медиатеку и выбрал замену на новую. Теперь приходиться по старинке, через шнурочек синхронизировать музыку.

  • Pingback: Новини тижня: нові iPod, інтерв’ю Чернишова та проблеми операторів()

  • хохлам лишь бы жаловаться. жизнь ему сломали =))