417 lines
15 KiB
HTML
417 lines
15 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">
|
|
<link rel="stylesheet" href="/css/lyricer.min.css">
|
|
</head>
|
|
<body>
|
|
<div class="layui-layout layui-layout-admin">
|
|
<div id="header"></div>
|
|
|
|
<div class="layui-body mybody body2">
|
|
<!-- <div id="side"></div>-->
|
|
|
|
<div style="margin-left: 2%; margin-top: 2%;">
|
|
<div>
|
|
<img src="/assets/defaultPlayImg.jpg" id="img" style="height: 300px; width: 300px"/>
|
|
|
|
<div style="top: 800px;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>
|
|
<a class="layui-btn layui-btn-normal" id="play_share">分享</a>
|
|
<a class="layui-btn layui-btn-normal" id="showLrc">显示歌词</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>
|
|
<script src="/js/lyricer.min.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"> </i>{{d.title}}</div>
|
|
{{# } else { }}
|
|
<div><i class="layui-icon"> </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>
|
|
<a class="layui-btn layui-btn-xs" lay-event="share">分享</a>
|
|
</script>
|
|
<script>
|
|
let localhost = "";
|
|
let musicLib = []
|
|
let isRandom = true;
|
|
let playIndex = 0;
|
|
let playNow = ""
|
|
let share = getParam('share');
|
|
if (share != null) {
|
|
//$('#playlist').remove()
|
|
$('#reload').remove()
|
|
$('#next').remove()
|
|
$('#play_share').remove()
|
|
}
|
|
|
|
$.get("/nas/music/getlocalhost.do", {share: share}, function (obj) {
|
|
try {
|
|
let json = JSON.parse(obj);
|
|
if (json.code === 403) {
|
|
layer.msg('您没有权限访问')
|
|
return;
|
|
}
|
|
localhost = json.data;
|
|
if (localhost === 'http://null:8000' || localhost === ":8000") {
|
|
localhost = "https://" + window.location.host;
|
|
}
|
|
} catch (e) {
|
|
localhost = ""
|
|
console.log(e)
|
|
}
|
|
layui.use(['table', 'element'], function () {
|
|
let table = layui.table;
|
|
let element = layui.element;
|
|
let listTable = undefined;
|
|
$.post("/public/nas/music/playlist.do", {share: share}, function (json) {
|
|
if (json.code !== 0) {
|
|
return;
|
|
}
|
|
listTable = table.render({
|
|
elem: '#playlist'
|
|
, url: json.data //数据接口
|
|
, 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: 150}
|
|
, {field: 'track', title: '音轨号', width: 100, sort: true}
|
|
, {field: "right", width: 200, toolbar: '#music'}
|
|
]]
|
|
, done: function (res, curr, count) {
|
|
musicLib = res.data
|
|
$('#musicSize').html("歌单总数:" + res.size)
|
|
}, error: function (e, data) {
|
|
}
|
|
})
|
|
table.on('rowDouble(music)', function (obj) {
|
|
//obj 同上
|
|
if (obj.data.isdir === 1) {
|
|
let path = obj.data.md5;
|
|
if (path === undefined) {
|
|
path = obj.data.file;
|
|
}
|
|
listTable.reload({
|
|
where: {
|
|
path: path
|
|
}
|
|
, page: {
|
|
curr: 1
|
|
}
|
|
});
|
|
} else {
|
|
isRandom = false;
|
|
playIndex = obj.tr[0].dataset.index;
|
|
play(obj.data)
|
|
}
|
|
|
|
});
|
|
|
|
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=&random=false&filePath=" + data.md5)
|
|
}
|
|
} else if (obj.event === 'play') {
|
|
if (data.md5 !== undefined) {
|
|
play(data)
|
|
return;
|
|
}
|
|
$.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) {
|
|
|
|
}
|
|
|
|
}
|
|
})
|
|
} else if (obj.event === 'share') {
|
|
let isDir = false;
|
|
let file = data.md5;
|
|
if (data.isdir === 1) {
|
|
isDir = true;
|
|
file = data.file;
|
|
}
|
|
$.post('/nas/music/share.do', {file: file, isDir: isDir}, function (json) {
|
|
if (json.code === 0) {
|
|
var url = "http://" + window.location.host + "/html/body/nas/music.html?share=" + json.data.token
|
|
layer.prompt({
|
|
title: "分享链接",
|
|
value: url
|
|
}, function (value, index, elem) {
|
|
$('.layui-layer-input')[0].select()
|
|
document.execCommand("Copy")
|
|
layer.close(index);
|
|
})
|
|
}
|
|
})
|
|
}
|
|
});
|
|
element.on('nav(menus)', function (elem) {
|
|
});
|
|
})
|
|
|
|
function playShare() {
|
|
$.get('/nas/music/playShare.do?share=' + share, function (json) {
|
|
isRandom = false;
|
|
playIndex = 0;
|
|
json.data.forEach(function (item) {
|
|
musicLib.push(item)
|
|
})
|
|
play(json.data[0])
|
|
})
|
|
}
|
|
|
|
if (share !== null) {
|
|
playShare()
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
let player = $.AudioPlayer;
|
|
let showLrc = false;
|
|
let lrc = new Lyricer();
|
|
player.init({
|
|
container: '#audioWrap'
|
|
, source: ''
|
|
, imagePath: '/assets'
|
|
, debuggers: false
|
|
, allowSeek: true
|
|
, endedCallback: function () {
|
|
console.log('播放完成')
|
|
if (isRandom) {
|
|
random()
|
|
} else {
|
|
playNext()
|
|
}
|
|
|
|
}, canplayCallback: function () {
|
|
console.log("点击播放")
|
|
}, timeupdateCallback: function (time) {
|
|
if (showLrc) {
|
|
lrc.move(time)
|
|
}
|
|
}
|
|
});
|
|
$.ajax({cache: false})
|
|
$('#header').load("/html/header.html");
|
|
$('#footer').load("/html/footer.html");
|
|
|
|
$('#img').click(function () {
|
|
if (share !== null) {
|
|
return;
|
|
}
|
|
isRandom = true;
|
|
random()
|
|
});
|
|
$('#download').click(function () {
|
|
window.open(localhost + "/nas/music/play.do?token=&random=false&filePath=" + playNow)
|
|
});
|
|
$('#next').click(function () {
|
|
playNext()
|
|
});
|
|
$('#play_share').click(function () {
|
|
$.post('/nas/music/share.do', {file: playNow}, function (json) {
|
|
if (json.code === 0) {
|
|
let url = "http://" + window.location.host + "/html/body/nas/music.html?share=" + json.data.token
|
|
layer.prompt({
|
|
title: "分享链接",
|
|
value: url
|
|
}, function (value, index, elem) {
|
|
$('.layui-layer-input')[0].select()
|
|
document.execCommand("Copy")
|
|
layer.close(index);
|
|
})
|
|
}
|
|
})
|
|
})
|
|
$('#showLrc').click(function () {
|
|
let html = '<div id="lyricer"></div>';
|
|
$.get(localhost + '/nas/music/lrc.do?filePath=' + playNow, function (file) {
|
|
layer.open({
|
|
title: '歌词列表',
|
|
area: ['400px', '600px'],
|
|
content: html,
|
|
shade: 0,
|
|
offset: 'rb',
|
|
success: function () {
|
|
showLrc = true
|
|
if(file===''){
|
|
file='[00:00.00]---暂无歌词---'
|
|
}
|
|
lrc.setLrc(file)
|
|
},
|
|
end: function () {
|
|
showLrc = false;
|
|
}
|
|
});
|
|
})
|
|
})
|
|
$('#reload').click(function () {
|
|
$.post(localhost + "/nas/music/reload.do", function (obj) {
|
|
layer.msg("提交刷新请求成功,几分钟后生效")
|
|
})
|
|
});
|
|
|
|
function updateLrc() {
|
|
if (showLrc) {
|
|
$.get(localhost + '/nas/music/lrc.do?filePath=' + playNow, function (file) {
|
|
if(file===''){
|
|
file='[00:00.00]---暂无歌词---'
|
|
}
|
|
lrc.setLrc(file)
|
|
lrc.move(0)
|
|
})
|
|
}
|
|
}
|
|
|
|
function playNext() {
|
|
if (isRandom) {
|
|
random()
|
|
return;
|
|
}
|
|
if (playIndex === musicLib.length) {
|
|
playIndex = 0;
|
|
}
|
|
if (musicLib[playIndex].isdir === 1) {
|
|
playIndex++
|
|
playNext()
|
|
} else {
|
|
play(musicLib[playIndex]);
|
|
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
|
|
});
|
|
update(json.data)
|
|
player.play()
|
|
|
|
} else {
|
|
layer.msg(json.msg)
|
|
}
|
|
})
|
|
}
|
|
|
|
function play(_json) {
|
|
let md5 = ''
|
|
md5 = _json.md5
|
|
playNow = _json.md5
|
|
player.updateSource({
|
|
source: localhost + "/nas/music/play.do?random=false&filePath=" + md5
|
|
});
|
|
update(md5)
|
|
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);
|
|
updateLrc()
|
|
}
|
|
|
|
|
|
</script>
|
|
<style>
|
|
|
|
</style>
|
|
</body>
|
|
|
|
</html> |