mirror of
				https://github.com/SuperBFG7/ympd
				synced 2025-11-03 23:33:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.1 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>
 |