diff --git a/README.md b/README.md index e8cc8b2..b15b606 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,11 @@ _\*this step can be skipped if you add WiFiSSID WiFiPassword pairs to the [yoRad --- ## Version history +#### v0.4.297 +- fix _"Could not decode a text frame as UTF-8"_ websocket error +- fix display of non-latin characters in the web interface +- fix css in Chrome + #### v0.4.293 - IR repeat fix diff --git a/yoRadio/audiohandlers.ino b/yoRadio/audiohandlers.ino index bf7cffa..8af619c 100644 --- a/yoRadio/audiohandlers.ino +++ b/yoRadio/audiohandlers.ino @@ -14,26 +14,38 @@ void audio_bitrate(const char *info) netserver.requestOnChange(BITRATE, 0); } +bool printable(const char *info) { + bool p = true; + for (int c = 0; c < strlen(info); c++) + { + if ((uint8_t)info[c] > 0x7e || (uint8_t)info[c] < 0x20) p = false; + } + if (!p) p = (uint8_t)info[0] >= 0xC2 && (uint8_t)info[1] >= 0x80 && (uint8_t)info[1] <= 0xBF; + return p; +} + void audio_showstation(const char *info) { if (strlen(info) > 0) { - display.title(info); + bool p = printable(info); + display.title(p?info:"*****"); if (player.requesToStart) { telnet.info(); player.requesToStart = false; } else { - telnet.printf("##CLI.ICY0#: %s\n", info); + telnet.printf("##CLI.ICY0#: %s\n", p?info:"*****"); } } } void audio_showstreamtitle(const char *info) { if (strlen(info) > 0) { - display.title(info); + bool p = printable(info); + display.title(p?info:"*****"); if (player.requesToStart) { telnet.info(); player.requesToStart = false; } else { - telnet.printf("##CLI.META#: %s\n> ", info); + telnet.printf("##CLI.META#: %s\n> ", p?info:"*****"); } } } diff --git a/yoRadio/data/www/script.js b/yoRadio/data/www/script.js index 9d91902..7064416 100644 --- a/yoRadio/data/www/script.js +++ b/yoRadio/data/www/script.js @@ -18,19 +18,11 @@ function onClose(event) { document.getElementById('playbutton').setAttribute("class", "stopped"); setTimeout(initWebSocket, 2000); } -function cleanString(input) { - var output = ""; - for (var i=0; i= 160 && input.charCodeAt(i) <= 255) { - output += input.charAt(i); - } - } - return output; -} + function onMessage(event) { var data = JSON.parse(event.data); if(data.nameset) document.getElementById('nameset').innerHTML = data.nameset; - if(data.meta) document.getElementById('meta').innerHTML = cleanString(data.meta); + if(data.meta) document.getElementById('meta').innerHTML = data.meta; if(data.vol) { setVolRangeValue(document.getElementById('volrange'),data.vol); } diff --git a/yoRadio/data/www/style.css b/yoRadio/data/www/style.css index 20ed30e..1cbe632 100644 --- a/yoRadio/data/www/style.css +++ b/yoRadio/data/www/style.css @@ -408,9 +408,16 @@ a:hover { text-decoration: underline } -moz-appearance: none; box-sizing: border-box; } -#volrange::-webkit-slider-thumb, .slider::-webkit-slider-thumb, #volrange::-moz-range-thumb, .slider::-moz-range-thumb { +#volrange::-webkit-slider-thumb, .slider::-webkit-slider-thumb { width: 10px; -webkit-appearance: none; + height: 10px; + cursor: ew-resize; + background-color: transparent; + border: 0; +} +#volrange::-moz-range-thumb, .slider::-moz-range-thumb { + width: 10px; -moz-appearance: none; height: 10px; cursor: ew-resize; diff --git a/yoRadio/options.h b/yoRadio/options.h index 343dcb4..41d312f 100644 --- a/yoRadio/options.h +++ b/yoRadio/options.h @@ -1,7 +1,7 @@ #ifndef options_h #define options_h -#define VERSION "0.4.293" +#define VERSION "0.4.297" #if __has_include("myoptions.h") #include "myoptions.h" // <- write your variable values here