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(); } });