From d205bafebce0e58b103f175507ea03ed93a9a90d Mon Sep 17 00:00:00 2001 From: Wirlaburla Date: Sun, 8 Jan 2023 23:59:24 -0600 Subject: [PATCH] fix character encoding --- radio.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/radio.js b/radio.js index e450ec5..f2975d0 100644 --- a/radio.js +++ b/radio.js @@ -78,8 +78,9 @@ function startStation(new_station) { // 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);}, - metadataTypes: ["icy"] + onMetadata: (metadata) => {updateMetadata(metadata.StreamTitle.decodeHTMLEntity());}, + metadataTypes: ["icy"], + icyCharacterEncoding: "iso-8859-1" }); // Start new context with analysers @@ -868,4 +869,15 @@ window.addEventListener('DOMContentLoaded', (event) => { } updateXHR(); -}); \ No newline at end of file +}); + +String.prototype.decodeHTMLEntity = function() { + // As much as I don't want to do this... it works I guess. + var t = document.createElement('a'); + t.innerHTML = this; + return t.innerText; + /* As much as I want to use this, it causes some issues with emojis + return this.replace(/&#(\d+);/g, function(match, dec) { + return String.fromCharCode(dec); + }); */ +} \ No newline at end of file