mirror of
https://github.com/badaix/snapcast.git
synced 2025-08-06 10:09:33 +02:00
Update snapweb to v0.5.0
This commit is contained in:
parent
7c83e3f656
commit
6ec6a4581b
3 changed files with 42 additions and 32 deletions
|
@ -4,7 +4,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="theme-color" content="#455A64">
|
<meta name="theme-color" content="#455A64">
|
||||||
<meta name="author" content="Johannes M. Pohl">
|
<meta name="author" content="Johannes M. Pohl">
|
||||||
<meta name="version" content="0.4.0">
|
<meta name="version" content="0.5.0">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<link rel="manifest" href="manifest.json">
|
<link rel="manifest" href="manifest.json">
|
||||||
|
|
|
@ -361,23 +361,25 @@ class SnapControl {
|
||||||
console.log('updateMetadata: ', metadata);
|
console.log('updateMetadata: ', metadata);
|
||||||
// https://github.com/Microsoft/TypeScript/issues/19473
|
// https://github.com/Microsoft/TypeScript/issues/19473
|
||||||
let title = metadata.title || "Unknown Title";
|
let title = metadata.title || "Unknown Title";
|
||||||
let artist = (metadata.artist != undefined) ? metadata.artist[0] : "Unknown Artist";
|
let artist = (metadata.artist != undefined) ? metadata.artist.join(', ') : "Unknown Artist";
|
||||||
let album = metadata.album || "";
|
let album = metadata.album || "";
|
||||||
let artwork = metadata.artUrl || 'snapcast-512.png';
|
let artwork = [{ src: 'snapcast-512.png', sizes: '512x512', type: 'image/png' }];
|
||||||
|
if (metadata.artUrl != undefined) {
|
||||||
|
artwork = [
|
||||||
|
{ src: metadata.artUrl, sizes: '96x96', type: 'image/png' },
|
||||||
|
{ src: metadata.artUrl, sizes: '128x128', type: 'image/png' },
|
||||||
|
{ src: metadata.artUrl, sizes: '192x192', type: 'image/png' },
|
||||||
|
{ src: metadata.artUrl, sizes: '256x256', type: 'image/png' },
|
||||||
|
{ src: metadata.artUrl, sizes: '384x384', type: 'image/png' },
|
||||||
|
{ src: metadata.artUrl, sizes: '512x512', type: 'image/png' },
|
||||||
|
];
|
||||||
|
} // || 'snapcast-512.png';
|
||||||
console.log('Metadata title: ' + title + ', artist: ' + artist + ', album: ' + album + ", artwork: " + artwork);
|
console.log('Metadata title: ' + title + ', artist: ' + artist + ', album: ' + album + ", artwork: " + artwork);
|
||||||
navigator.mediaSession.metadata = new MediaMetadata({
|
navigator.mediaSession.metadata = new MediaMetadata({
|
||||||
title: title,
|
title: title,
|
||||||
artist: artist,
|
artist: artist,
|
||||||
album: album,
|
album: album,
|
||||||
artwork: [
|
artwork: artwork
|
||||||
// { src: artwork, sizes: '250x250', type: 'image/jpeg' },
|
|
||||||
// 'https://dummyimage.com/96x96', sizes: '96x96', type: 'image/png' },
|
|
||||||
{ src: artwork, sizes: '128x128', type: 'image/png' },
|
|
||||||
{ src: artwork, sizes: '192x192', type: 'image/png' },
|
|
||||||
{ src: artwork, sizes: '256x256', type: 'image/png' },
|
|
||||||
{ src: artwork, sizes: '384x384', type: 'image/png' },
|
|
||||||
{ src: artwork, sizes: '512x512', type: 'image/png' },
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
// mediaSession.setActionHandler('seekbackward', function () { });
|
// mediaSession.setActionHandler('seekbackward', function () { });
|
||||||
// mediaSession.setActionHandler('seekforward', function () { });
|
// mediaSession.setActionHandler('seekforward', function () { });
|
||||||
|
@ -537,7 +539,7 @@ class SnapControl {
|
||||||
status_req_id;
|
status_req_id;
|
||||||
}
|
}
|
||||||
let snapcontrol;
|
let snapcontrol;
|
||||||
let snapstream = null;
|
let snapstream = new SnapStream(config.baseUrl);
|
||||||
let hide_offline = true;
|
let hide_offline = true;
|
||||||
let autoplay_done = false;
|
let autoplay_done = false;
|
||||||
let audio = document.createElement('audio');
|
let audio = document.createElement('audio');
|
||||||
|
@ -549,7 +551,7 @@ function show() {
|
||||||
const versionElem = document.getElementsByTagName("meta").namedItem("version");
|
const versionElem = document.getElementsByTagName("meta").namedItem("version");
|
||||||
console.log("Snapweb version " + (versionElem ? versionElem.content : "null"));
|
console.log("Snapweb version " + (versionElem ? versionElem.content : "null"));
|
||||||
let play_img;
|
let play_img;
|
||||||
if (snapstream) {
|
if (isPlaying()) {
|
||||||
play_img = 'stop.png';
|
play_img = 'stop.png';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -700,7 +702,12 @@ function show() {
|
||||||
document.getElementById('show').innerHTML = content;
|
document.getElementById('show').innerHTML = content;
|
||||||
let playElem = document.getElementById('play-button');
|
let playElem = document.getElementById('play-button');
|
||||||
playElem.onclick = () => {
|
playElem.onclick = () => {
|
||||||
|
if (isPlaying()) {
|
||||||
|
stop();
|
||||||
|
}
|
||||||
|
else {
|
||||||
play();
|
play();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
for (let group of snapcontrol.server.groups) {
|
for (let group of snapcontrol.server.groups) {
|
||||||
if (group.clients.length > 1) {
|
if (group.clients.length > 1) {
|
||||||
|
@ -773,17 +780,18 @@ function setVolume(id, mute) {
|
||||||
if (needs_update)
|
if (needs_update)
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
function play() {
|
function isPlaying() {
|
||||||
if (snapstream) {
|
return document.getElementsByTagName("audio").length > 0;
|
||||||
|
}
|
||||||
|
function stop() {
|
||||||
snapstream.stop();
|
snapstream.stop();
|
||||||
snapstream = null;
|
|
||||||
audio.pause();
|
audio.pause();
|
||||||
audio.src = '';
|
audio.src = "";
|
||||||
document.body.removeChild(audio);
|
document.body.removeChild(audio);
|
||||||
}
|
}
|
||||||
else {
|
function play() {
|
||||||
snapstream = new SnapStream(config.baseUrl);
|
|
||||||
// User interacted with the page. Let's play audio...
|
// User interacted with the page. Let's play audio...
|
||||||
|
snapstream.resume();
|
||||||
document.body.appendChild(audio);
|
document.body.appendChild(audio);
|
||||||
audio.src = "10-seconds-of-silence.mp3";
|
audio.src = "10-seconds-of-silence.mp3";
|
||||||
audio.loop = true;
|
audio.loop = true;
|
||||||
|
@ -791,7 +799,6 @@ function play() {
|
||||||
snapcontrol.updateProperties(snapcontrol.getMyStreamId());
|
snapcontrol.updateProperties(snapcontrol.getMyStreamId());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
function setMuteGroup(id, mute) {
|
function setMuteGroup(id, mute) {
|
||||||
snapcontrol.muteGroup(id, mute);
|
snapcontrol.muteGroup(id, mute);
|
||||||
show();
|
show();
|
||||||
|
|
|
@ -712,6 +712,9 @@ class SnapStream {
|
||||||
alert("Sorry, but the Web Audio API is not supported by your browser");
|
alert("Sorry, but the Web Audio API is not supported by your browser");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
resume() {
|
||||||
|
this.ctx.resume();
|
||||||
|
}
|
||||||
setupAudioContext() {
|
setupAudioContext() {
|
||||||
let AudioContext = window.AudioContext // Default
|
let AudioContext = window.AudioContext // Default
|
||||||
|| window.webkitAudioContext // Safari and old versions of Chrome
|
|| window.webkitAudioContext // Safari and old versions of Chrome
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue