web_toolset/web/html/body/nas/music.html

290 lines
10 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>来点Music~</title>
<link rel="stylesheet" href="/layui/css/layui.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
<div id="header"></div>
<div class="layui-body" style="left: 200px;overflow:auto;">
<!-- <div id="side"></div>-->
<div style="margin-left: 2%; margin-top: 2%;">
<div>
<img src="/assets/defaultPlayImg.jpg" id="img" style="height: 200px; width: 200px"/>
<div style="display:inline-block;">
<div id="musicSize">歌单总数:</div>
<div id="playerNowList">播放列表:</div>
<div id="title">标题:</div>
<div id="artist">艺术家:</div>
<div id="album">专辑:</div>
<div id="composer">作曲家</div>
<a class="layui-btn layui-btn-normal" id="download">下载</a>
<a class="layui-btn layui-btn-normal" id="next">下一首</a>
</div>
<div id="audioWrap"></div>
</div>
<table id="playlist" lay-filter="music"></table>
<a class="layui-btn layui-btn-normal" id="reload">刷新曲库</a>
</div>
<div id="footer"></div>
</div>
</div>
<script src="/layui/layui.js"></script>
<script src="/js/jquery-3.2.1.js"></script>
<script src="/js/myjs.js"></script>
<link rel="stylesheet" href="/css/AudioPlayer.css">
<script src="/js/AudioPlayer.js"></script>
<script id="listTemplet">
{{# if(d.isdir===1){ }}
<div><i class="layui-icon">&#xe656; </i>{{d.title}}</div>
{{# } else { }}
<div><i class="layui-icon">&#xe6fc; </i>{{d.title}}</div>
{{# } }}
</script>
<script type="text/html" id="music">
<a class="layui-btn layui-btn-xs" lay-event="download">下载</a>
<a class="layui-btn layui-btn-xs" lay-event="play">播放</a>
</script>
<script>
let localhost = "";
let musicLib = []
let isRandom = true;
let playIndex = 0;
let playNow = ""
$.get("/nas/music/getlocalhost.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk", function (obj) {
try {
let json = JSON.parse(obj);
localhost = json.data + ":8000";
console.log("音频地址:" + localhost)
if (localhost === 'http://null:8000' || localhost === ":8000") {
localhost = "http://127.0.0.1"
}
} catch (e) {
localhost = ""
}
// localhost = "http://113.109.23.240:8000";
layui.use(['table', 'element'], function () {
let table = layui.table;
let element = layui.element;
let listTable = table.render({
elem: '#playlist'
, url: localhost + '/nas/music/list.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk' //数据接口
, method: 'post'
, where: {
path: 'root',
type: false
}
, contentType: 'application/json'
, page: true //开启分页
, cols: [[
{field: 'title', title: '标题', width: 400, sort: true, templet: "#listTemplet"}
, {field: 'artist', title: '艺术家', width: 200}
, {field: 'album', title: '专辑', width: 200}
, {field: 'composer', title: '作曲', width: 200}
, {field: 'track', title: '音轨号', width: 100, sort: true}
, {field: "right", width: 150, toolbar: '#music'}
]]
, done: function (res, curr, count) {
musicLib = res.data
$('#musicSize').html("歌单总数:" + res.size)
}
})
table.on('rowDouble(music)', function (obj) {
//obj 同上
if (obj.data.isdir === 1) {
listTable.reload({
where: {
path: obj.data.file
}
, page: {
curr: 1
}
});
} else {
isRandom = false;
playIndex = obj.tr[0].dataset.index;
play(obj.data.file)
}
});
table.on('tool(music)', function (obj) {
let data = obj.data;
if (obj.event === 'download') {
if (data.isdir === 0) {
window.open(localhost + "/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath=" + new Base64().encode(data.file))
}
} else if (obj.event === 'play') {
$.ajax({
type: "POST",
url:localhost + "/nas/music/list.do",
contentType: "application/json; charset=utf-8",
data:JSON.stringify({type: true, path: data.file}),
dataType: "json",
success:function (json){
try {
if (json.code === 0) {
playIndex = 0;
musicLib=[]
for (let datum of json.data) {
if(datum.isdir===0){
musicLib.push(datum)
}
}
isRandom = false;
playNext()
}
}catch (e){
}
}
})
}
});
element.on('nav(menus)', function (elem) {
});
});
});
let player = $.AudioPlayer;
player.init({
container: '#audioWrap'
, source: ''
, imagePath: '/assets'
, debuggers: false
, allowSeek: true
, endedCallback: function () {
console.log('播放完成')
if (isRandom) {
random()
} else {
playNext()
}
}, canplayCallback: function () {
console.log("点击播放")
}
});
$.ajax({cache: false})
$('#header').load("/html/header.html");
$('#footer').load("/html/footer.html");
$('#side').load("/html/body/nas/side.html");
$('#img').click(function () {
isRandom = true;
random()
});
$('#download').click(function () {
window.open(localhost + "/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath=" + playNow)
});
$('#next').click(function () {
playNext()
});
$('#reload').click(function () {
$.post(localhost + "/nas/music/reload.do", function (obj) {
layer.msg("提交刷新请求成功,几分钟后生效")
})
});
function playNext() {
if (isRandom) {
random()
return;
}
if (playIndex === musicLib.length) {
playIndex = 0;
}
if (musicLib[playIndex].isdir === 1) {
playIndex++
playNext()
} else {
play(musicLib[playIndex].file);
playIndex++
}
}
function random() {
$.post(localhost + "/nas/music/random.do", function (data) {
let json = JSON.parse(data)
if (json.code === 0) {
playNow = json.data
player.updateSource({
source: localhost + "/nas/music/play.do?random=false&filePath=" + json.data + "&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
});
update(json.data)
player.play()
} else {
layer.msg(json.msg)
}
})
}
function play(file) {
let filePath = escape(new Base64().encode(file))
playNow = filePath
player.updateSource({
source: localhost + "/nas/music/play.do?random=false&filePath=" + filePath + "&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
});
update(filePath)
player.play()
}
function update(fileName) {
$.ajax({
type: 'post'
, url: localhost + '/nas/music/find/file.do'
, contentType: "application/json"
, data: JSON.stringify({"path": fileName})
, success: function (data) {
let json = JSON.parse(data);
if (isRandom) {
$('#playerNowList').html("播放列表: (全列表随机播放)")
} else {
$('#playerNowList').html("播放列表: (" + playIndex + "/" + musicLib.length + ")")
}
$('#title').html("标题:" + json.data.title)
$('#artist').html("艺术家:" + json.data.artist)
$('#album').html("专辑:" + json.data.album)
$('#composer').html("作曲:" + json.data.composer)
navigator.mediaSession.metadata = new MediaMetadata({
title: json.data.title,
artist: json.data.artist,
album: json.data.album,
artwork:[
{
src: localhost+'/nas/music/web/image.do?fileName='+fileName,
type: 'image/png',
sizes: '128x128'
}
]
});
navigator.mediaSession.setActionHandler('nexttrack', function () {
// 用户点击了“下一首”媒体通知图标
playNext();
});
}
})
$('#img').attr("src",localhost+'/nas/music/web/image.do?fileName='+fileName);
}
</script>
<style>
</style>
</body>
</html>