ntv-site/js/song-display.js

55 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-03-27 15:46:52 +00:00
var songEndpoint = "https://stream.services.nez-cf.net.eu.org:1965/ntv_nowplaying.php";
function fetchSong() {
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() {
if (this.status == 200) resolve(this.responseText);
else reject(this);
});
xhr.open("GET", songEndpoint);
xhr.send();
});
}
function spacePad(i, c = " ", a = 32) {
var l = 32 - i.length;
if (l < 0) l = 0;
return i + c.repeat(l);
}
var scrollIndex = -1;
var scrollText = "";
var scrollElement = "null";
var skipTurns = 0;
var skipTurnsBegin = 5;
function scroller() {
if (scrollElement == "null") return;
if (skipTurns > 0) return skipTurns--;
if (skipTurnsBegin > 0) skipTurnsBegin--;
scrollIndex++;
if (scrollIndex > scrollText.length) {
scrollIndex = -1;
skipTurnsBegin = 5;
return skipTurns = 5;
}
if (scrollText.length > 32) scrollElement.innerHTML = spacePad(scrollText.substr(skipTurnsBegin > 0 ? 0 : scrollIndex, 32).replace(/ /g, "&nbsp;"));
else scrollElement.innerHTML = spacePad(scrollText.replace(/ /g, "&nbsp;"));
}
async function updateSongs() {
var song = await fetchSong();
song = "now playing: " + song;
if (scrollText != song) {
scrollText = song;
scrollIndex = -1;
}
}
document.addEventListener("DOMContentLoaded", function() {
scrollElement = document.getElementById("song-display");
setInterval(scroller, 200);
updateSongs();
setInterval(updateSongs, 20 * 1000);
});