Иногда хочется выгрузить список треков из плейлиста Яндекс Музыки — например чтобы:

  • сохранить треклист

  • перенести музыку в другой сервис

  • сделать бэкап

  • проанализировать плейлист

    Ещё одна причина — версии треков. Иногда в каталоге Яндекс Музыки встречаются отредактированные версии песен (например, с запиканной ненормативной лексикой или изменёнными строками). Поэтому бывает полезно сохранить исходный список треков из плейлиста, чтобы при необходимости найти оригинальные версии композиций в других сервисах.

Но у Яндекс Музыки нет функции экспорта.

Я решил написать маленький скрипт, который решает эту проблему прямо в браузере.

Яндекс Музыка использует виртуализированный список.

Это значит, что:

  • в DOM одновременно находится только небольшая часть треков

  • остальные подгружаются при прокрутке

Поэтому обычный парсинг страницы не работает — нужно учитывать эту особенность.

Решение

Я написал небольшой JavaScript скрипт, который:

  • собирает треки во время прокрутки

  • корректно работает с виртуализированным списком

  • позволяет экспортировать треки в TXT или CSV

Работает прямо через DevTools Console.

Без расширений, без установки.

Как использовать

1️⃣ Открываем плейлист в Яндекс Музыке

2️⃣ Открываем DevTools

F12 → Console

3️⃣ Вставляем скрипт

4️⃣ Пролистываем плейлист вниз

5️⃣ Нажимаем Finalize capture

6️⃣ Скачиваем список треков

Форматы экспорта

TXT

Artist - Title

CSV

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 сразу

  • появляются только при прокрутке

Поэтому скрипт собирает их во время скролла.

Исходный код

Скрипт выложен на GitHub

Там же есть инструкция и README.

Что можно улучшить

Если будет интерес к проекту, можно добавить:

  • экспорт в JSON

  • автоматический скролл

  • поддержку альбомов и артистов

  • браузерное расширение

Заключение

Иногда маленький скрипт может решить очень конкретную проблему.

Надеюсь этот инструмент окажется полезным.

Если понравилось — поставьте ⭐ репозиторию.