Exportar una lista de reproducción de Yandex Music mediante JavaScript en DevTools
Los desarrolladores a menudo necesitan extraer una lista de canciones de Yandex Music para transferirla a otros servicios, hacer copias de seguridad o analizarla. No hay una función oficial de exportación, pero un script de JavaScript resuelve el problema simulando el desplazamiento. Se ejecuta en la consola del navegador, teniendo en cuenta la lista virtualizada: las canciones se cargan dinámicamente, y el DOM solo contiene la parte visible.
El script recopila datos de artista, título y duración, exportando a TXT o CSV. El proceso toma segundos para listas de reproducción con hasta miles de canciones.
Preparación y ejecución
- Abre la lista de reproducción deseada en Yandex Music.
- Inicia DevTools (F12) y ve a la pestaña Consola.
- Pega el script en la consola y ejecútalo.
- Desplaza la lista de reproducción hasta el final—el script capturará todas las canciones.
- Ejecuta el comando
finalizeCapture()para finalizar. - Descarga el archivo mediante el enlace proporcionado.
// Pega este código en la Consola
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`);
};
Este código usa MutationObserver para rastrear nuevos elementos en el DOM. Los selectores están adaptados a la estructura actual de Yandex Music—verifícalos si ocurren cambios.
Formatos de salida y ejemplos
- TXT: Una lista simple de cadenas
Artista - Títuloo con duración. - CSV: Columnas
Artista,Título,Duraciónpara importar en hojas de cálculo.
Ejemplo TXT para una lista de música electrónica:
Daft Punk - One More Time
The Weeknd - Blinding Lights
Justice - D.A.N.C.E.
Versión CSV:
Daft Punk,One More Time,4:02
The Weeknd,Blinding Lights,3:20
Justice,D.A.N.C.E.,4:00
La lista virtualizada requiere desplazamiento manual: el script no automatiza el desplazamiento para evitar bloqueos. Para listas grandes, usa el evento de rueda o Page Down.
Detalles de implementación técnica
La lista virtualizada (por ejemplo, basada en react-window o similar) renderiza solo las filas visibles, ahorrando memoria. Un querySelectorAll estándar capturará 20–50 canciones, con el resto oculto.
Componentes clave del script:
- MutationObserver: Responde a adiciones de nodos DOM durante el desplazamiento.
- Bandera Dataset: Evita duplicados (
item.dataset.captured). - Blob y URL.createObjectURL: Genera un archivo descargable sin servidor.
- Selectores data-testid: Estables, menos propensos a cambiar en SPAs.
Para CSV, añade conversión:
const csv = tracks.map(t => `${t.artist},"${t.title}",${t.duration || ''}`).join('\n');
Maneja el escape de comillas en títulos para CSV correcto.
Posibles mejoras para producción
- Desplazamiento automático:
setInterval(() => window.scrollBy(0, 500), 100)con pausas. - Exportación JSON:
JSON.stringify(tracks, null, 2). - Soporte de álbum: Selectores similares para /artist/ y /album/.
- Filtros: Excluir duplicados por ID de canción.
- Extensión de navegador: Script de contenido con UI para botones.
Prueba en diferentes listas de reproducción—la estructura puede variar para podcasts o grabaciones en vivo.
Puntos clave
- El script funciona exclusivamente en el navegador, sin APIs o extensiones.
- Tiene en cuenta la lista virtualizada—recopila canciones solo durante el desplazamiento.
- La exportación TXT/CSV está lista para importar en Spotify, Apple Music.
- Fácil de modificar: añade ID de canción o portada.
- Útil para análisis: estadísticas por género, duración.
— Editorial Team
Aún no hay comentarios.