Как экспортировать плейлист из Яндекс Музыки за 10 секунд
Иногда хочется выгрузить список треков из плейлиста Яндекс Музыки — например чтобы:
сохранить треклист
перенести музыку в другой сервис
сделать бэкап
проанализировать плейлист
Ещё одна причина — версии треков. Иногда в каталоге Яндекс Музыки встречаются отредактированные версии песен (например, с запиканной ненормативной лексикой или изменёнными строками). Поэтому бывает полезно сохранить исходный список треков из плейлиста, чтобы при необходимости найти оригинальные версии композиций в других сервисах.
Но у Яндекс Музыки нет функции экспорта.
Я решил написать маленький скрипт, который решает эту проблему прямо в браузере.
Яндекс Музыка использует виртуализированный список.
Это значит, что:
в DOM одновременно находится только небольшая часть треков
остальные подгружаются при прокрутке
Поэтому обычный парсинг страницы не работает — нужно учитывать эту особенность.
Решение
Я написал небольшой JavaScript скрипт, который:
собирает треки во время прокрутки
корректно работает с виртуализированным списком
позволяет экспортировать треки в TXT или CSV
Работает прямо через DevTools Console.
Без расширений, без установки.
Как использовать
1️⃣ Открываем плейлист в Яндекс Музыке
2️⃣ Открываем DevTools
F12 → Console3️⃣ Вставляем скрипт
4️⃣ Пролистываем плейлист вниз
5️⃣ Нажимаем Finalize capture
6️⃣ Скачиваем список треков
Форматы экспорта
TXT
Artist - TitleCSV
Artist,Title,DurationПример
Если в плейлисте есть:
Daft Punk - One More Time
The Weeknd - Blinding Lights
Justice - D.A.N.C.E.TXT файл будет выглядеть так:
Daft Punk - One More Time
The Weeknd - Blinding Lights
Justice - D.A.N.C.E.Почему нужен скролл
Сайт Яндекс Музыки использует virtualized list.
Это означает, что треки:
не присутствуют в DOM сразу
появляются только при прокрутке
Поэтому скрипт собирает их во время скролла.
Исходный код
Там же есть инструкция и README.
Что можно улучшить
Если будет интерес к проекту, можно добавить:
экспорт в JSON
автоматический скролл
поддержку альбомов и артистов
браузерное расширение
Заключение
Иногда маленький скрипт может решить очень конкретную проблему.
Надеюсь этот инструмент окажется полезным.
Если понравилось — поставьте ⭐ репозиторию.