+++ /dev/null
-<!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>