mirror of
https://github.com/SuperBFG7/ympd
synced 2024-12-22 17:10:26 +00:00
169 lines
5.5 KiB
HTML
169 lines
5.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0">-->
|
|
<meta name="viewport" content="width=320" />
|
|
<meta
|
|
name="description"
|
|
content="ympd - fast and lightweight MPD webclient"
|
|
/>
|
|
<meta name="author" content="andy@ndyk.de" />
|
|
|
|
<title>ympd player</title>
|
|
|
|
<!-- Bootstrap core CSS -->
|
|
<link href="css/bootstrap.css" rel="stylesheet" />
|
|
<link href="css/bootstrap-theme.css" rel="stylesheet" />
|
|
|
|
<!-- Custom styles for this template -->
|
|
<link href="css/mpd.css" rel="stylesheet" />
|
|
<link
|
|
href="assets/favicon.ico"
|
|
rel="shortcut icon"
|
|
type="image/vnd.microsoft.icon"
|
|
/>
|
|
<script src="js/jquery-1.10.2.min.js"></script>
|
|
<script src="js/jquery.cookie.js"></script>
|
|
<script src="js/bootstrap.min.js"></script>
|
|
<script src="js/bootstrap-notify.js"></script>
|
|
<script type="text/javascript">
|
|
function clickLocalPlay() {
|
|
var player = document.getElementById('player');
|
|
$('#localplay-icon')
|
|
.removeClass('glyphicon-play')
|
|
.removeClass('glyphicon-pause');
|
|
|
|
if (player.paused) {
|
|
var mpdstream = $.cookie('mpdstream');
|
|
player.src = mpdstream;
|
|
console.log('playing mpd stream: ' + player.src);
|
|
player.load();
|
|
player.play();
|
|
$('#localplay-icon').addClass('glyphicon-pause');
|
|
} else {
|
|
player.pause();
|
|
player.src = '';
|
|
player.removeAttribute('src');
|
|
$('#localplay-icon').addClass('glyphicon-play');
|
|
}
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
document
|
|
.getElementById('player')
|
|
.addEventListener('stalled', function () {
|
|
if (!document.getElementById('player').paused) {
|
|
this.pause();
|
|
clickLocalPlay();
|
|
$('.top-right')
|
|
.notify({
|
|
message: {
|
|
text: 'music stream stalled - trying to recover...',
|
|
},
|
|
type: 'danger',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
}
|
|
});
|
|
|
|
document
|
|
.getElementById('player')
|
|
.addEventListener('pause', function () {
|
|
this.src = '';
|
|
this.removeAttribute('src');
|
|
$('#localplay-icon')
|
|
.removeClass('glyphicon-pause')
|
|
.addClass('glyphicon-play');
|
|
});
|
|
|
|
document.getElementById('player').addEventListener(
|
|
'error',
|
|
function failed(e) {
|
|
this.pause();
|
|
switch (e.target.error.code) {
|
|
case e.target.error.MEDIA_ERR_ABORTED:
|
|
$('.top-right')
|
|
.notify({
|
|
message: { text: 'Audio playback aborted by user.' },
|
|
type: 'info',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
break;
|
|
case e.target.error.MEDIA_ERR_NETWORK:
|
|
$('.top-right')
|
|
.notify({
|
|
message: { text: 'Network error while playing audio.' },
|
|
type: 'danger',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
break;
|
|
case e.target.error.MEDIA_ERR_DECODE:
|
|
$('.top-right')
|
|
.notify({
|
|
message: {
|
|
text: 'Audio playback aborted. Did you unplug your headphones?',
|
|
},
|
|
type: 'danger',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
break;
|
|
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
|
|
$('.top-right')
|
|
.notify({
|
|
message: {
|
|
text: 'Error while loading audio (server, network or format error).',
|
|
},
|
|
type: 'danger',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
break;
|
|
default:
|
|
$('.top-right')
|
|
.notify({
|
|
message: { text: 'Unknown error while playing audio.' },
|
|
type: 'danger',
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
})
|
|
.show();
|
|
break;
|
|
}
|
|
},
|
|
true
|
|
);
|
|
});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="/" target="_blank"
|
|
><span class="glyphicon glyphicon-play-circle"></span> ympd</a
|
|
>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container starter-template">
|
|
<div class="row">
|
|
<div class="col-md-10 col-xs-12">
|
|
<audio id="player" preload="none"></audio>
|
|
<button
|
|
type="button"
|
|
class="btn btn-default btn-lg center-block"
|
|
onclick="clickLocalPlay()"
|
|
>
|
|
<span id="localplay-icon" class="glyphicon glyphicon-play"></span>
|
|
</button>
|
|
<div class="notifications top-right"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|