Zpět na domů

Skript exportu playlistu Yandex Music v JS

Článek popisuje JavaScript-skript pro export playlistů Yandex Music přes DevTools. Zohledňuje virtualized list, sbírá skladby při scrollování do TXT/CSV. Plný kód, příklady a vylepšení pro vývojáře.

Export skladeb Yandex Music: JS-skript za 10 s
Advertisement 728x90

Export playlistu z Yandex Music pomocí JavaScriptu v DevTools

Vývojáři často potřebují získat seznam skladeb z Yandex Music pro přenos do jiných služeb, zálohování nebo analýzu. Oficiální funkce exportu neexistuje, ale skript v JavaScriptu problém řeší simulací posouvání. Funguje v konzoli prohlížeče, bere v úvahu virtualizovaný seznam: skladby se načítají dynamicky, DOM obsahuje pouze viditelnou část.

Skript shromažďuje data o interpretovi, názvu a délce skladby a exportuje je do TXT nebo CSV. Proces trvá sekundy i pro playlisty s tisíci skladbami.

Příprava a spuštění

  • Otevřete požadovaný playlist v Yandex Music.
  • Spusťte DevTools (F12) a přejděte na záložku Console.
  • Vložte skript do konzole a spusťte ho.
  • Posouvejte playlist až do konce – skript zachytí všechny skladby.
  • Spusťte příkaz finalizeCapture() pro dokončení.
  • Stáhněte soubor pomocí nabídnutého odkazu.
// Vložte tento kód do 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(`Zachyceno ${tracks.length} skladeb`);
};

Tento kód používá MutationObserver pro sledování nových prvků v DOM. Selektory jsou přizpůsobeny aktuální struktuře Yandex Music – při změnách je zkontrolujte.

Google AdInline article slot

Formáty výstupu a příklady

  • TXT: Jednoduchý seznam řádků Interpret - Název nebo s délkou.
  • CSV: Sloupce Interpret,Název,Délka pro import do tabulek.

Příklad TXT pro playlist s elektronikou:

Daft Punk - One More Time
The Weeknd - Blinding Lights
Justice - D.A.N.C.E.

CSV varianta:

Daft Punk,One More Time,4:02
The Weeknd,Blinding Lights,3:20
Justice,D.A.N.C.E.,4:00

Virtualizovaný seznam vyžaduje ruční posouvání: skript neautomatizuje scroll, aby se předešlo blokování. Pro velké playlisty použijte wheel event nebo Page Down.

Google AdInline article slot

Technické detaily implementace

Virtualizovaný seznam (například na bázi react-window nebo analogů) vykresluje pouze viditelné řádky, čímž šetří paměť. Běžný querySelectorAll zachytí 20–50 skladeb, zbytek je skrytý.

Klíčové komponenty skriptu:

  • MutationObserver: Reaguje na přidání DOM uzlů při scrollování.
  • Dataset příznak: Zabraňuje duplikátům (item.dataset.captured).
  • Blob a URL.createObjectURL: Generace stahovatelného souboru bez serveru.
  • Selektory data-testid: Jsou stabilní, méně často se mění v SPA.

Pro CSV přidejte transformaci:

Google AdInline article slot
const csv = tracks.map(t => `${t.artist},"${t.title}",${t.duration || ''}`).join('\n');

Zpracujte escapování uvozovek v názvu pro korektní CSV.

Možná vylepšení pro produkci

  • Automatické posouvání: setInterval(() => window.scrollBy(0, 500), 100) s pauzami.
  • JSON export: JSON.stringify(tracks, null, 2).
  • Podpora alb: Analogické selektory pro /artist/ a /album/.
  • Filtry: Vyloučení duplikátů podle ID skladby.
  • Rozšíření prohlížeče: Content script s UI pro tlačítka.

Testujte na různých playlistech – struktura se může lišit pro podcasty nebo živé nahrávky.

Co je důležité

  • Skript funguje výhradně v prohlížeči, bez API nebo rozšíření.
  • Bere v úvahu virtualizovaný seznam – shromažďuje skladby pouze při posouvání.
  • Export do TXT/CSV je připraven pro import do Spotify, Apple Music.
  • Snadno upravitelný: přidejte ID skladby nebo obrázek.
  • Aktuální pro analýzu: statistika podle žánrů, délky.

— Editorial Team

Advertisement 728x90

Číst dál