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.
Ausgabeformate und Beispiele
- TXT: Eine einfache Liste von Strings
Künstler - Titeloder mit Dauer. - CSV: Spalten
Künstler,Titel,Dauerfü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.
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:
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
Noch keine Kommentare.