dusk-radio/script.js

71 lines
2.1 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
setTimeout(initialize, 500)
})
function initialize() {
let playButtons = [...document.querySelectorAll('.play')]
playButtons.map((x) => x.addEventListener('click', () => playButtonAction(x)))
let cadenaLinks = [...document.querySelectorAll('.linkButton')]
cadenaLinks.map((x) => x.addEventListener('click', () => copyLink(x)))
var cadenaPlaying = [...document.querySelectorAll('.playing')]
cadenaPlaying.map((x) => actualitzar(x))
let refreshButton = document.querySelector('#refresh')
refreshButton.addEventListener('click', () => { cadenaPlaying.map((x) => actualitzar(x))})
}
function playButtonAction(x) {
let audio = x.parentNode.parentNode.querySelector('audio')
if (audio.paused) {
audio.load()
audio.play()
x.src="./stop.svg"
}
else {
let aux = audio.querySelector('source').src
audio.querySelector('source').src = ""
audio.pause()
setTimeout(() => audio.load())
x.src="./play.svg"
audio.querySelector('source').src = aux
}
}
function copyLink(x) {
let link = x.parentNode.parentNode.querySelector('source')
let pText = x.parentNode.parentNode.querySelector('.link')
console.log(link)
console.log(pText)
pText.style.display = "unset"
pText.value = link.src
console.log(pText.value)
pText.select()
document.execCommand('copy')
pText.style.display = "none"
}
function actualitzar(x) {
actualitzarIntern(x)
}
function actualitzarIntern(x) {
fetch("status-json.xsl").then((response) => response.json())
.then((json) => {
var link = x.parentNode.querySelector('source').src
var filename = basename(link)
var title = ""
var JSONArray = Array.from(json.icestats.source)
for (let i = 0; i < JSONArray.length; i++) {
if (basename(JSONArray[i].listenurl) === filename) {
title = "♪ " + JSONArray[i].title
}
}
x.parentNode.querySelector('.playing').innerHTML = title
})
}
function basename (str) {
return str.substring(str.lastIndexOf('/') + 1)
}