document.addEventListener('DOMContentLoaded', () => {
const audio = document.getElementById('liveAudio');
const playPauseBtn = document.getElementById('playPauseBtn');
const songTitleDisplay = document.getElementById('songTitle');
const streamUrl = 'https://srv10.streamingradio.ar:7043';
const metadataUrl = `${streamUrl}/status-json.xsl`; // Endpoint común de Icecast/Shoutcast V2
let isPlaying = false;
let metadataInterval;
// --- 1. Control de Reproducción (Play/Pause/Autoplay) ---
function updateButton(paused) {
if (paused) {
playPauseBtn.classList.add('paused');
playPauseBtn.setAttribute('aria-label', 'Reproducir');
// Cambiar SVG a Play (usando el mismo SVG para Play/Pause)
playPauseBtn.querySelector('svg').innerHTML = ``;
} else {
playPauseBtn.classList.remove('paused');
playPauseBtn.setAttribute('aria-label', 'Detener');
// Cambiar SVG a Stop/Pause (usando el mismo SVG para Play/Pause)
playPauseBtn.querySelector('svg').innerHTML = ``;
}
}
function playStream() {
audio.volume = 1.0; // Volumen al 100%
const playPromise = audio.play();
if (playPromise !== undefined) {
playPromise.then(_ => {
// Reproducción iniciada con éxito
isPlaying = true;
updateButton(false);
startMetadataUpdates();
}).catch(error => {
// Autoplay bloqueado (común en navegadores modernos)
console.warn("Autoplay bloqueado. El usuario debe hacer clic.", error);
isPlaying = false;
updateButton(true);
songTitleDisplay.innerHTML = 'Pulsa ▶ para escuchar';
});
}
}
function stopStream() {
audio.pause();
isPlaying = false;
updateButton(true);
clearInterval(metadataInterval);
songTitleDisplay.innerHTML = 'Detenido';
}
// Inicializar: Intentar Autoplay y preparar el botón
playStream();
playPauseBtn.addEventListener('click', () => {
if (isPlaying) {
stopStream();
} else {
playStream();
}
});
// --- 2. Obtención de Metadatos (Título de la Canción) ---
function fetchMetadata() {
fetch(metadataUrl)
.then(response => {
// Verificar si la respuesta es válida (puede ser JSON)
if (!response.ok) {
throw new Error('No se pudo obtener el JSON de metadatos.');
}
return response.json();
})
.then(data => {
let currentSong = 'Power Hits Radio (Argentino)'; // Mensaje por defecto
// Asumimos estructura Shoutcast/Icecast V2
if (data && data.icestats && data.icestats.source) {
// El campo 'source' puede ser un objeto o un array
const source = Array.isArray(data.icestats.source) ? data.icestats.source[0] : data.icestats.source;
if (source && source.title) {
currentSong = source.title;
}
} else if (data && data.server) {
// Asumimos otra estructura, buscar en 'server.listeners'
const server = Array.isArray(data.server) ? data.server[0] : data.server;
if (server && server.title) {
currentSong = server.title;
}
}
if (currentSong) {
// Actualizar el título de la canción
songTitleDisplay.innerHTML = `${currentSong}`;
}
})
.catch(e => {
console.error("Error al obtener metadatos. Posible bloqueo CORS o estructura JSON incorrecta.", e);
// Mostrar un mensaje claro al usuario en caso de error
songTitleDisplay.innerHTML = 'Sin info de canción (Error CORS)';
clearInterval(metadataInterval);
});
}
function startMetadataUpdates() {
// Ejecutar inmediatamente y luego cada 5 segundos
fetchMetadata();
metadataInterval = setInterval(fetchMetadata, 5000);
}
// Si la reproducción no fue bloqueada, iniciar la actualización de metadatos
if (isPlaying) {
startMetadataUpdates();
}
});