Eksport playlisty z Yandex Muzyki za pomocą JavaScript w DevTools
Deweloperzy często potrzebują wyodrębnić listę utworów z Yandex Muzyki, aby przenieść je do innych serwisów, wykonać kopię zapasową lub przeprowadzić analizę. Oficjalna funkcja eksportu nie istnieje, ale skrypt w JavaScript rozwiązuje ten problem poprzez symulację przewijania. Działa w konsoli przeglądarki, uwzględniając wirtualizowaną listę: utwory są ładowane dynamicznie, a DOM zawiera tylko widoczną część.
Skrypt zbiera dane artysty, tytuł i czas trwania, eksportując do TXT lub CSV. Proces trwa sekundy dla playlist zawierających tysiące utworów.
Przygotowanie i uruchomienie
- Otwórz wybraną playlistę w Yandex Muzyce.
- Uruchom DevTools (F12) i przejdź do zakładki Console.
- Wklej skrypt do konsoli i wykonaj go.
- Przewiń playlistę do końca — skrypt przechwyci wszystkie utwory.
- Wykonaj polecenie
finalizeCapture()w celu zakończenia. - Pobierz plik za pomocą wygenerowanego linku.
// Wklej ten kod w Console
let tracks = [];
const observer = new MutationObserver(() => {
const items = document.querySelectorAll('[data-testid="track-row"]');
items.forEach(item => {
if (!item.dataset.captured) {
const artist = item.querySelector('[data-testid="artist-name"]')?.textContent.trim();
const title = item.querySelector('[data-testid="track-title"]')?.textContent.trim();
const duration = item.querySelector('[data-testid="track-duration"]')?.textContent.trim();
if (artist && title) {
tracks.push({artist, title, duration});
item.dataset.captured = 'true';
}
}
});
});
observer.observe(document.body, {childList: true, subtree: true});
window.finalizeCapture = () => {
observer.disconnect();
const data = tracks.map(t => `${t.artist} - ${t.title}${t.duration ? ` (${t.duration})` : ''}`).join('\n');
const blob = new Blob([data], {type: 'text/plain'});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'playlist.txt';
a.click();
console.log(`Captured ${tracks.length} tracks`);
};
Ten kod wykorzystuje MutationObserver do śledzenia nowych elementów w DOM. Selekcje są dostosowane do aktualnej struktury Yandex Muzyki — sprawdź je w przypadku zmian.
Formaty wyjściowe i przykłady
- TXT: Prosta lista wierszy
Artysta - Tytułlub z czasem trwania. - CSV: Kolumny
Artysta,Tytuł,Czas trwaniado importu do arkuszy.
Przykład TXT dla playlisty z muzyką elektroniczną:
Daft Punk - One More Time
The Weeknd - Blinding Lights
Justice - D.A.N.C.E.
Wariant CSV:
Daft Punk,One More Time,4:02
The Weeknd,Blinding Lights,3:20
Justice,D.A.N.C.E.,4:00
Wirtualizowana lista wymaga ręcznego przewijania: skrypt nie automatyzuje scrollowania, aby uniknąć blokad. Dla dużych playlist użyj zdarzenia wheel lub klawisza Page Down.
Szczegóły techniczne implementacji
Wirtualizowana lista (np. oparta na react-window lub podobnych) renderuje tylko widoczne wiersze, oszczędzając pamięć. Standardowy querySelectorAll przechwyci 20–50 utworów, reszta jest ukryta.
Kluczowe komponenty skryptu:
- MutationObserver: Reaguje na dodawanie węzłów DOM podczas przewijania.
- Flaga dataset: Zapobiega duplikatom (
item.dataset.captured). - Blob i URL.createObjectURL: Generowanie pliku do pobrania bez serwera.
- Selekcje data-testid: Stabilne, rzadziej zmieniają się w SPA.
Dla CSV dodaj konwersję:
const csv = tracks.map(t => `${t.artist},"${t.title}",${t.duration || ''}`).join('\n');
Przetwórz znaki cudzysłowu w tytule dla poprawnego CSV.
Możliwe ulepszenia dla produkcji
- Automatyczne przewijanie:
setInterval(() => window.scrollBy(0, 500), 100)z przerwami. - Eksport JSON:
JSON.stringify(tracks, null, 2). - Obsługa albumów: Podobne selekcje dla /artist/ i /album/.
- Filtry: Wykluczanie duplikatów według ID utworu.
- Rozszerzenie przeglądarki: Content script z interfejsem dla przycisków.
Testuj na różnych playlistach — struktura może się różnić dla podcastów lub nagrań na żywo.
Co jest ważne
- Skrypt działa wyłącznie w przeglądarce, bez API lub rozszerzeń.
- Uwzględnia wirtualizowaną listę — zbiera utwory tylko podczas przewijania.
- Eksport do TXT/CSV gotowy do importu do Spotify, Apple Music.
- Łatwy do modyfikacji: dodaj ID utworu lub okładki.
- Aktualny dla analiz: statystyki według gatunków, czasu trwania.
— Editorial Team
Brak komentarzy.