Как спасти свою библиотеку Яндекс.Музыки? [UPD №1]

Как спасти свою библиотеку Яндекс.Музыки? [UPD №1]

8 сентября 2022 года, компания Sony Music объявила об окончательном уходе с рынка России. Для многих меломанов это означает неминуемую утерю любимых композиций 💔

Права на треки международных исполнителей не включены в условия сделки, поэтому все оставшиеся композиции должны будут убрать из российских стриминговых сервисов

[ ℹ Есть обновления] Что же делать, как спасти свою музыкальную коллекцию? Не буду тянуть кота за известное место и сразу перейду к сути. Есть два способа:

Способ №1 «Изи катка». Экспортировать список треков в текстовом формате

Для этого понадобится расширение для браузера под названием «YaMuTools», ссылка:

  • для Хрома, Оперы, Яндекса и Эджа — https://chrome.google.com/webstore/detail/yamutools-новые-функции-д/dgjneghdfaeajjemeklgmbojeeplehah?hl=ru
  • для Огнелисы — https://addons.mozilla.org/ru/firefox/addon/yamutools/
  • Github — https://github.com/Chimildic/YaMuTools

После установки и простой настройки, надо обновить страницу с ЯМузыкой, перейдите на страницу плейлиста и нажать на кнопку YaMuTools → Экспортер

Это Антоха, он классный :3
Это Антоха, он классный :3

В зависимости от количества треков в плейлисте, плагин чуток подумает и скопирует список всех треков в буфер обмена. Содержимое оного можно сразу вставлять в блокнот, игнорируя рекомендацию перейдите на spotlistr или tunemymusic, — там обычный не форматированный текст (список с названиями композиций).

Время ток
Время ток

Способ №2 «Уровень сложности "Азиат"». Скачать любимые треки, спарсить список id треков, переименовать файлы.

Дисклеймер: все рекомендации ниже по тексту даны исключительно в образовательных целях. Повторять всё увиденное и прочитанное никому не рекомендуется.

Второй способ абсолютно выдуманный, совпадения с любыми реальными действиями случайны!

Данный способ позволяет сохранить на ваш ПК практически любой плейлист из библиотеки Яндекс Музыки. Почему практически любой? Потому что авторы плейлистов редко обновляют оные, и если в плейлисте будут недоступные треки, то могут возникнуть ошибки при сохранении плейлиста.

Итак, надо понадобится

  • приложение Яндекс.Музыка из Microsoft Store — https://www.microsoft.com/ru-ru/p/yandexmusic/9nblggh0cb6d#activetab=pivot:overviewtab
  • программа для пакетного переименования файлов «Advanced Renamer» — https://www.advancedrenamer.com/
  • блокнот (например, notepad++)
  • немного внимательности и терпения
  • умения пользоваться сочетанием клавиш ctrl+c / ctrl+v
Яндекс.Музыка для Windows как бы намекает ;)
Яндекс.Музыка для Windows как бы намекает ;)

Итак,

☕ Подготавливаемся

  1. Качаем и устанавливаем Advanced Renamer, устанавливаем с выбором русского языка, запускаем его и откладываем
  2. Авторизовываемся в приложении Яндекс.Музыка для Windows
  3. Идём в настройки (левый нижний угол) и тыкам переключатель
    — «Высокое качество звука»
    — «Не засыпать при загрузке»
  4. Переходим во вкладку «Плелисты», выбираем нужный и жмём «Скачать»
    ⚠ имейте ввиду, треки качаются на диск C:/,
    ⚠ каждый трек может весить до 15мб и у вас должно быть достаточно свободного места на диске!
  5. Пока скачиваются ваши треки, переходим найти папку, куда Яндекс.Музыка качает свои файлы. Папка находится по следующему адресу:
C:\Users\{__ПРОФИЛЬ__}\AppData\Local\Packages\A025C540.Yandex.Music_vfvw9svesycw6\LocalState\Music\

Если вы не можете сразу найти папку, тогда

  • перейдите в директорию
    C:\Users\{__ПРОФИЛЬ__}\AppData\Local\
  • найдите папку \Packages\
  • в ней будет куууча подпапок, ориентируйтесь на название, оно содержит длинное название из цифр и букв, в центре которого .Yandex.Music_
  • в этой папке переходите в \LocalState\Music\
  • там будет папка со скаченными треками :)

Парсом список треков

Не пугайтесь, тут нет ничего сложного :)

  • Заходите в веб-версию Яндекс.Музыки, переходите в ваш любимый плейлист и теперь надо запустить Инструменты разработчика (DevTools).
  • В Google Chrome, Firefox, Edge, Яндекс.Браузер это делается через комбинацию клавиш ctrl + shift + i

⚠ Важно, чтобы плейлист был публичным. Если вы хотите скачать свой плейлист, тогда убедитесь, что у него не стоит приватный режим. Для этого надо перейти в плейлист, нажать на три точки (...) и в конце списка взглянуть на пункт «Приватный плейлист», переключатель должен быть серым:

Пункт «Приватный плейлист», переключатель должен быть серым
Пункт «Приватный плейлист», переключатель должен быть серым

Итак, вы открыли страницу с нужным плейлистом и запустили DevTools,

  1. Переходите во вкладку «Network»
  2. Убедитесь, что не стоит галочка «Disable cache»
  3. Переключите сортировку на «Fetch/XHR»
  4. Теперь обновите страницу с плейлистом не закрывая окна DevTools; во время обновления страницы, в большом поле под панелью фильтров начнут появляться данные. Дождитесь, когда страница с плейлистом перезагрузится.
  5. Теперь ищите в левом столбце «Name» строку, содержащую следующий текст: playlist.jsx?owner=
  6. кликните на неё и в правом окне выберите вкладку «Preview»; в появившемся ниже окне наводим курсор на ►playlist:
  7. теперь жмём правую кнопку мышки и выбираем
    «Store object as global variable»
выбираем«Store object as global variable»
выбираем«Store object as global variable»
  • Теперь переходим во вкладку «Console», ищем глазами две нижние строчки, первая из которые начинаются с temp1
  • В нижнем поле, напротив знака > вставляем следующий код:
var count = temp1.tracks.length var playlist = temp1.tracks var list = new Array() for (var i = 0; i < count; i++){ list[i] = playlist[i].realId + ".mp3" + " ; " + playlist[i].artists[0].name + " - " + playlist[i].title} window.open().document.write(list.join('<br/>'))
Вставляем код после &gt;
Вставляем код после >

После того, как вы нажмёте Enter, откроется новая вкладка, в которой будет спарсен список треков с указанием внутреннего id ЯндексМузыки + приставка .mp3, а также название трека согласно плейлисту. Вам необходимо скопировать весь текст в любой текстовый редактор и сохранить файл.

E2-E4
E2-E4

Всё. Это была самая сложная часть гайда, теперь можно выдохнуть :)

⚠Чуть не забыл!

Обязательно проверьте названия ваших треков.

Из названия необходимо убрать следующие символы: < > : " / \ * ?

Например, Яндекс.Музыка вуалирует «плохие» слова звёздочками: Nigga → N****

Ещё необходимо заменить все буквы с акутом. Это буквы с ударением, например é → e

🎶 Переименовываем треки

Самое сложное позади, осталась рутина:

  • Переходим в папку Яндекс.Музыки с уже скаченными треками; видим, что все треки называются набором цифр, — это внутренний id ЯндексМузыки, мы его уже спарсили.
  • Копируем все треки в отдельную папку.
  • В эту же папку копируем текстовый файл со спарсенным списком треков.
  • Переходим в Advanced Renamer, жмём кнопку в верхнем меню «Импорт», выбираем «CSV файл ...»
  • В открывшемся окне надо указать путь к текстовому файлу, для этого жмём кнопку с тремя точками [...] и в Проводнике находим нужную директорию (рекомендую её скопировать); директория будет пустая, и для того, чтобы программа увидела текстовик, надо сменить тип файлов с *.csv на *.*
  • Теперь надо указать путь к папке с треками. Для этого просто вставьте в поле «Папка исходных файлов:» ранее скопированный путь и поставьте в конце знак слеша \ (если его там нет). Программа сразу всё подтянет.
  • Если же вы не копировали путь в Проводнике, или у вас нет поля с адресом папки (например, из-за настроек отображения проводника), тогда вам придётся вручную, через не очень удобное меню тыкаться к папке. В общем, разберётесь ;)
Как спасти свою библиотеку Яндекс.Музыки? [UPD №1]

Итак, вы указали путь к папке со скаченными треками, указали путь к текстовому файлу со списком id треков и названиями.

  • Если в окне «Импорт из CSV файла» везде стоят «ОК», можете жать кнопку «Импорт» ✨
  • Ренеймер немного подумает и откроет основное окно, в нём вам надо найти глазами колонку «Список», а в ней, в низу таблицы выпадалку «Применить к:» и сменить текущее значение на «Имя».
  • Всё. Жмите «Запустить»
Как спасти свою библиотеку Яндекс.Музыки? [UPD №1]

Вот и всё :)
Вы большой молодец и спаситель библиотеки Яндекс.Музыки от забвения! 💖🎶✨

UPD №1. Способ №3 «Уровень сложности "Ленивый идиот"». Берём чужое и ломаем его.

Почему идиот? Потому что ничего умнее я не придумал 🤷‍♂

Некоторые пользователи, включая меня самого, у кого в библиотеке более 150 треков, могли столкнуться с проблемой ограничения кол-ва элементов массива списка треков, который грузится по ссылке playlist.jsx?owner=

[0 ... 99] [100 ... 149] {da-kakogo-hrena-jpg}
[0 ... 99] [100 ... 149] {da-kakogo-hrena-jpg}

Да что ты, черт побери, такое несёшь?! — спросите вы и будете правы. Ведь я сам не знаю, что происходит, но я уже нашёл, как это исправить!

Итак,
🤦‍♂ нам понадобится чуть подправить расширение YaMuTools из Способа №1

  • устанавливаем расширение, если ещё не сделали этого
  • открываем в Проводнике Windows
    C:\Users\{__ПРОФИЛЬ__}\AppData\Local\Google\Chrome\User Data\Default\Extensions\dgjneghdfaeajjemeklgmbojeeplehah
  • Ну или по шагам, вначале переходим в директорию
    C:\Users\{__ПРОФИЛЬ__}\AppData\Local\
  • находим папку \Google\
  • в ней \Chrome\
  • далее переходим \User Data\Default\
    Это папка вашего профиля Google Chrome, если у вас несколько профилей, то вместо Default надо выбрать ваш.
  • в папке Default нам нужна \Extensions\dgjneghdfaeajjemeklgmbojeeplehah\
    этот набор букв это папка, в которой находится искомое расширение. Оно уникально для всех расширений и также является уникальной ссылкой в магазине приложений Google (просто вбейте в поисковике эту белиберду).

🤦🏿‍♀ Стадия I

В этой папке будет ещё одна папка с указанием версии приложения, не редактируйте в ней ничего, для начала скопируйте её в любое место за пределами диска C:\
После того, как скопировали папку с указанием версии приложения в другое место, надо удалить всё содержимое папки \dgjneghdfaeajjemeklgmbojeeplehah\. Это удалит оригинальное расширение и позволит избежать конфликтов.
Далее,

  • Скопировав папку, переходим в неё, ищем папку
    «Script» → «Tools» → «Playlist»
  • в ней нас интересует файл «exporter.js»
  • открываем его любым редактором (лично я использую Notepad++ [https://notepad-plus-plus.org/downloads/]), и ищем 31 строку:
let title = `${source[i].realId} ${source[i].artists[0].name} ${source[i].title}`;
  • и заменяем её на
let title = `${source[i].realId}mp3`+`; `+`${source[i].artists[0].name}`+`_`+`${source[i].title}`;
  • либо же просто замените всё содержимое файла вот этим (это тоже самое, что и пунктом выше, но без необходимости искать строки):
const idExporterTool = 'btnExporterTool'; const EXPORTER_MENU_ITEM = { title: getMessage('exporter_title'), handler: onClickExporterTool, }; function onClickExporterTool() { toggleDropdown('menuPlaylistMain'); receiveTracksFromPlaylist((tracks) => { outputTracksWithAlert(tracks) }); } function outputTracksWithAlert(tracks) { copyTracksToClipbloard(tracks).then(() => { Ad.showAdIfCan("треки собираются..").then(() => { Swal.fire({ html: '<p>Список треков скопирован в буфер обмена. Перейдите на <a target="_blank" href="https://spotlistr.com/search/textbox">spotlistr</a> или <a target="_blank" href="https://tunemymusic.com">tunemymusic</a> и вставьте его в поле.</p>' }) }) }, (e) => { console.error(e) fireSwal('Ошибка при при копировании списка треков. Повторите попытку или сообщите об ошибке по обратной связи (ссылка в настройках)', 'error'); }); } function copyTracksToClipbloard(source) { let tracks = []; for (i = 0; i < source.length; i++) { if (source[i].artists && source[i].artists.length > 0 && source[i].title) { let title = `${source[i].realId}mp3`+`; `+`${source[i].artists[0].name}`+`_`+`${source[i].title}`; tracks.push(`${title} ${source[i].version || ''}`.trim().formatName()); } else if (source[i].title) { tracks.push(`${source[i].title}}`); console.log(`У трека с индексом ${i + 1} (${source[i].title}) нет данных об исполнителе.`); } else { console.log(`О треке с индексом ${i + 1} нет данных. Возможно он заблокирован.`); } } return navigator.clipboard.writeText(tracks.join('\n')); }
`${source[i].realId}mp3`+`; `
`${source[i].realId}mp3`+`; `

Молодцом! Сохраняйте изменения и погнали дальше!

🤦🏾‍♂ Стадия II

  • Теперь надо установить наше модифицированное расширение.
  • Для этого переходим в раздел расширений в Хроме, вбиваем в адресной строке этот адрес chrome://extensions/
  • Жмём в верхнем правом углу тумблер «Режим разработчика»
  • И тыкаем в пункт «Загрузить распакованное расширение»
  • Выбираем папку с модифицированным расширением и жмём «Выбор папки».
  • Готово, расширение загружено и должно появится в списке всех расширений браузера.

    Проверяем, всё ли нормально: ищем в списке наше расширение, переходим в «Сведения», скроллим вниз и ищем надпись
    Источник
    Распакованное расширение
    Загружено из: {__ВАШЕ_МЕСТО__}

🤦‍♀ Стадия III

  • Переходим на ЯндексМузыку, в нужный вам плейлист
  • Повторяем действия из Способа №1: жмём YaMuTools → Экспартёр
  • Вставляем полученные данные в блокнот, например Notepadd++,
  • Скопированные данные будут выглядеть следующим образом:
104931799mp3; антоха мс_тропики 95082603mp3; антоха мс_выше 24294779mp3; антоха мс_лето прием
  • Внимательный читатель заметит, что расширение файла (mp3) слилось с названием трека (с его realid), что не хорошо.
  • Исправить это можно следующим образом:
  • В Notepadd++ надо нажать сочетание клавиш Ctrl+F и в появившемся окошке выбрать вкладку «Замена»;
  • Далее выделяем и копируем «mp3;» (mp3 и точка с запятой), вставляем в поле «Найти:»;
  • А в поле «Заменить на:» пишем это «.mp3 |» (mp3 и вертикальная черта), жмём кнопку «Заменить всё»
Как спасти свою библиотеку Яндекс.Музыки? [UPD №1]

Если у вас нет Notepad++, тогда подойдёт обычный Блокнот Windows. Окно замены вызывается через «Правка» → «Заменить» или CTRL + H.

Ура! Список всех ваших треков, вне зависимости от того, сколько их у вас, готов! Вы большой молодец во второй раз 💖💖

PS: далее надо скормить список треков Advanced Renamer, но в поле «Разделитесь:» вместо точки с запятой указать вертикальную черту |

Но это вы уже умеете ;)

вертикальная черта в качестве разделителя
вертикальная черта в качестве разделителя

PSS: Всем, кто спрашивал и хочет спросить про плейлист для катки. Он не мой, я им не управляю и удалить / добавить ничего не могу :) Лично я из этого плейлиста слушаю около 15 треков.
Ссылка на музыка для катки — https://music.yandex.ru/users/jmkt-tech/playlists/1010

9494
150 комментариев

Способ №3. «Крутой чел». Перестать, блять, пользоваться Яндекс Музыкой.

57

а чем пользоваться предлагаешь? Бумом? Спотифай в России без костылей не работает.
Плюс подписки яндекса в том, что там не только музыка, но и кинопоиск и прочие плюхи и стоит копейки. К тому же слушаю музыку через Яндекс Станцию, а она кроме яндекс музыки ничего не играет

77

Прикол. Месяц назад я заметил в библиотеке кучу серых треков, на которые закончились права. Перенёс все в споти, успешно слушаю без проблем. Зашёл щас проверить в Яндекс снова - серых треков больше нет. Знаете почему? А их скрыли вообще из моей библиотеки. Гениальный ход. Если я не вижу проблемы, значит ее нет. Если пытаться вспомнить какие треки могли удалить и поискать через поиск - да, они найдутся серыми. Если не искать, на найдёшь.

29

Так они недоступны. Нахера их по умолчанию показывать?

Может ты в настройках изменил видимость недоступных треков?

Через API выполни поиск с пустым запросом.

Не совсем понял, первый способ дает просто названия треков в плейлисте? И че с ним делать? Смотреть и радоваться, ух вот это треки были?

13