Integra tu tracklist en la web
El widget dlp-player permite integrar una tracklist sincronizada en cualquier sitio web. Los visitantes ven el tema actual resaltado mientras se reproduce la grabación.
Requisitos previos
- Un archivo JSON de playlist exportado desde DJ Live Playlist (con una sesión grabada)
- Una página web con un
<video>,<audio>o<iframe>de YouTube/SoundCloud
Instalación
Vía npm
bash
npm install dlp-playerjs
import 'dlp-player/style.css'
import 'dlp-player'Vía CDN
html
<link rel="stylesheet" href="https://unpkg.com/dlp-player/dist/dlp-player.css">
<script src="https://unpkg.com/dlp-player/dist/dlp-player.umd.js"></script>Inicio rápido
Añade la clase dlp y un atributo data-dlp-src apuntando a tu JSON de playlist en cualquier elemento multimedia:
html
<!-- Con un archivo de vídeo -->
<video class="dlp" data-dlp-src="/playlist.json" src="mi-mix.mp4" controls></video>
<!-- Con un archivo de audio -->
<audio class="dlp" data-dlp-src="/playlist.json" src="mi-mix.mp3" controls></audio>
<!-- Con un vídeo de YouTube -->
<iframe class="dlp" data-dlp-src="/playlist.json"
src="https://www.youtube.com/embed/VIDEO_ID"
allow="autoplay; encrypted-media" allowfullscreen></iframe>El widget se inicializa automáticamente al cargar la página — no se necesita JavaScript.
Modos de visualización
Modo lista (por defecto)
La tracklist aparece junto al reproductor. El tema actual se resalta y se desplaza automáticamente.
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="list"
src="mix.mp4" controls></video>Modo overlay
La tracklist se superpone en la parte inferior del reproductor con animaciones de desvanecimiento.
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="overlay"
src="mix.mp4" controls></video>Cómo funciona
- El widget lee el JSON de playlist exportado desde DLP
- Usa el
recordingStartTimey elplayHistoryde cada tema para calcular los offsets - Durante la reproducción, el SyncEngine asocia el
currentTimecon los temas activos - La visualización se actualiza en tiempo real
Reproductores soportados
| Elemento | Detección automática |
|---|---|
<video> | Evento nativo timeupdate |
<audio> | Evento nativo timeupdate |
YouTube <iframe> | YouTube IFrame API (cargada automáticamente) |
SoundCloud <iframe> | SoundCloud Widget API |
Personalización CSS
Redefine las variables CSS para adaptarte al diseño de tu sitio:
css
.dlp-wrapper {
--dlp-bg: #1a1a2e;
--dlp-text-color: #eee;
--dlp-highlight-bg: rgba(14, 165, 233, 0.2);
--dlp-title-size: 1rem;
--dlp-artist-size: 0.85rem;
}API JavaScript
UMD (global)
js
// La auto-inicialización ocurre en DOMContentLoaded
// Acceder a las instancias:
DLP.instances // Array de DlpInstance
DLP.init() // Re-escanear la página para nuevos elementosESM (import)
js
import { DlpInstance, SyncEngine, loadPlaylist } from 'dlp-player'
const playlist = await loadPlaylist('/path/playlist.json')
const sync = new SyncEngine(playlist)
const activeIds = sync.getActiveTrackIds(currentTimeInSeconds)
