diff --git a/radio.js b/radio.js index f2975d0..5b4bbb6 100644 --- a/radio.js +++ b/radio.js @@ -77,11 +77,30 @@ function startStation(new_station) { if (tuner.player != null) tuner.player.stop(); // Start player using IcecastMetadataPlayer for the metadata. // Use ?+date for avoiding problems with cache. - tuner.player = new IcecastMetadataPlayer(new_station.listen_url+"?"+Date.now(), { - onMetadata: (metadata) => {updateMetadata(metadata.StreamTitle.decodeHTMLEntity());}, - metadataTypes: ["icy"], - icyCharacterEncoding: "iso-8859-1" - }); + try { + document.body.classList.remove('old'); + tuner.player = new IcecastMetadataPlayer(new_station.listen_url+"?"+Date.now(), { + onMetadata: (metadata) => { + console.log(metadata); + let title = metadata.StreamTitle??(metadata.ARTIST+" - "+metadata.TITLE); + updateMetadata(title.decodeHTMLEntity()); + let metasplit = metadata.StreamTitle.split(" - "); + if ('mediaSession' in navigator) { navigator.mediaSession.metadata = new MediaMetadata({ title: metadata.TITLE??metasplit[1], artist: metadata.ARTIST??metasplit[0] }) }; + }, + metadataTypes: ["icy", "ogg"], + icyCharacterEncoding: "iso-8859-1" + }); + } catch(error) { + document.body.classList.add('old'); + console.error(error); + tuner.player = { audioElement: null }; + tuner.player.audioElement = new Audio(); + tuner.player.audioElement.src = new_station.listen_url+"?"+Date.now(); + updateMetadata(new_station.listen_url); + + tuner.player.play = function() { tuner.player.audioElement.play(); }; + tuner.player.stop = function() { tuner.player.audioElement.pause(); tuner.player.audioElement.src = ''; }; + } // Start new context with analysers // Check if channels is only 1. If not, we assume stereo.