Zurück zur Startseite

Yandex Music Playlist-Export-Skript in JS

Der Artikel beschreibt JavaScript-Skript zum Exportieren von Yandex Music Playlists über DevTools. Berücksichtigt virtualisierte Liste, sammelt Tracks beim Scrollen in TXT/CSV. Vollständiger Code, Beispiele und Verbesserungen für Entwickler.

Yandex Music Tracks Export: JS-Skript in 10 Sek.
Advertisement 728x90

Yandex Music-Playlist per JavaScript in DevTools exportieren

Entwickler müssen oft eine Trackliste von Yandex Music extrahieren, um sie auf andere Dienste zu übertragen, zu sichern oder zu analysieren. Es gibt keine offizielle Exportfunktion, aber ein JavaScript-Skript löst das Problem durch simuliertes Scrollen. Es läuft in der Browserkonsole und berücksichtigt die virtualisierte Liste: Tracks werden dynamisch geladen, wobei das DOM nur den sichtbaren Teil enthält.

Das Skript sammelt Daten zu Künstler, Titel und Dauer und exportiert sie als TXT oder CSV. Der Vorgang dauert Sekunden für Playlists mit bis zu tausenden Tracks.

Vorbereitung und Ausführung

  • Öffnen Sie die gewünschte Playlist in Yandex Music.
  • Starten Sie DevTools (F12) und gehen Sie zum Tab "Konsole".
  • Fügen Sie das Skript in die Konsole ein und führen Sie es aus.
  • Scrollen Sie die Playlist bis zum Ende – das Skript erfasst alle Tracks.
  • Führen Sie den Befehl finalizeCapture() aus, um abzuschließen.
  • Laden Sie die Datei über den bereitgestellten Link herunter.
// Fügen Sie diesen Code in die Konsole ein
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(`Erfasst ${tracks.length} Tracks`);
};

Dieser Code verwendet MutationObserver, um neue Elemente im DOM zu verfolgen. Die Selektoren sind an die aktuelle Struktur von Yandex Music angepasst – überprüfen Sie sie bei Änderungen.

Google AdInline article slot

Ausgabeformate und Beispiele

  • TXT: Eine einfache Liste von Strings Künstler - Titel oder mit Dauer.
  • CSV: Spalten Künstler,Titel,Dauer für den Import in Tabellenkalkulationen.

Beispiel TXT für eine elektronische Playlist:

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

CSV-Version:

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

Die virtualisierte Liste erfordert manuelles Scrollen: Das Skript automatisiert das Scrollen nicht, um Blockaden zu vermeiden. Für große Playlists nutzen Sie das Mausrad oder Page Down.

Google AdInline article slot

Technische Implementierungsdetails

Virtualisierte Liste (z. B. basierend auf react-window oder ähnlich) rendert nur sichtbare Zeilen und spart Speicher. Ein Standard-querySelectorAll erfasst 20–50 Tracks, der Rest ist versteckt.

Wichtige Skriptkomponenten:

  • MutationObserver: Reagiert auf DOM-Knoten-Ergänzungen während des Scrollens.
  • Dataset-Flag: Verhindert Duplikate (item.dataset.captured).
  • Blob und URL.createObjectURL: Erzeugt eine herunterladbare Datei ohne Server.
  • data-testid-Selektoren: Stabil, weniger anfällig für Änderungen in SPAs.

Für CSV fügen Sie die Konvertierung hinzu:

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

Behandeln Sie Anführungszeichen in Titeln für korrekte CSV.

Mögliche Verbesserungen für die Produktion

  • Automatisches Scrollen: setInterval(() => window.scrollBy(0, 500), 100) mit Pausen.
  • JSON-Export: JSON.stringify(tracks, null, 2).
  • Album-Unterstützung: Ähnliche Selektoren für /artist/ und /album/.
  • Filter: Duplikate nach Track-ID ausschließen.
  • Browser-Erweiterung: Content-Skript mit UI für Buttons.

Testen Sie auf verschiedenen Playlists – die Struktur kann für Podcasts oder Live-Aufnahmen variieren.

Wichtige Punkte

  • Das Skript funktioniert ausschließlich im Browser, ohne APIs oder Erweiterungen.
  • Berücksichtigt virtualisierte Liste – sammelt Tracks nur während des Scrollens.
  • TXT/CSV-Export ist bereit für den Import in Spotify, Apple Music.
  • Einfach zu modifizieren: Track-ID oder Coverbild hinzufügen.
  • Nützlich für Analysen: Statistiken nach Genre, Dauer.

— Editorial Team

Advertisement 728x90

Weiterlesen