新增播放整个文件夹功能

新增下一首功能
This commit is contained in:
yutou
2020-10-26 18:32:35 +08:00
parent 76c064b14c
commit 806b257e81
3 changed files with 130 additions and 67 deletions

View File

@@ -7,7 +7,6 @@
<title>来点Music~</title>
<link rel="stylesheet" href="/layui/css/layui.css">
</head>
<link href="/css/video-js.min.css" rel="stylesheet">
<body>
<div class="layui-layout layui-layout-admin">
<div id="header"></div>
@@ -20,11 +19,13 @@
<img src="/assets/defaultPlayImg.jpg" id="img" style="height: 200px; width: 200px"/>
<div style="display:inline-block;">
<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>
@@ -43,59 +44,68 @@
<link rel="stylesheet" href="/css/AudioPlayer.css">
<script src="/js/AudioPlayer.js"></script>
<script id="listTemplet">
{{# if(d.dir){ }}
<div><i class="layui-icon">&#xe656; </i>{{d.title}}</div>
{{# if(d.dir){ }}
<div><i class="layui-icon">&#xe656; </i>{{d.title}}</div>
{{# } else { }}
<div><i class="layui-icon">&#xe6fc; </i>{{d.title}}</div>
<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){
let json=JSON.parse(obj);
localhost=json.data;
// localhost="http://116.22.200.20:8000"
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";
if(localhost==='http://null:8000'){
localhost=""
}
} catch (e) {
localhost = ""
}
console.log(localhost)
// localhost="http://116.22.200.20:8000"
layui.use(['table', 'element'], function () {
let table = layui.table;
let element = layui.element;
let listTable=table.render({
let listTable = table.render({
elem: '#playlist'
, url: localhost + '/nas/music/list.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk' //数据接口
, page: true //开启分页
, cols: [[
{field: 'title', title: '标题', width: 400,templet:"#listTemplet"}
{field: 'title', title: '标题', width: 400, templet: "#listTemplet"}
, {field: 'artist', title: '艺术家', width: 200}
, {field: 'album', title: '专辑', width: 200}
, {field: 'composer', title: '作曲', width: 200}
, {field: 'track', title: '音轨号', width: 100}
, {field: "right", width: 100, toolbar: '#music'}
, {field: "right", width: 150, toolbar: '#music'}
]]
,done:function (res,curr,count){
musicLib=res.data
, done: function (res, curr, count) {
musicLib = res.data
}
})
table.on('rowDouble(music)', function (obj) {
//obj 同上
console.log(obj.data) //得到当前行元素对象
if(obj.data.dir){
if (obj.data.dir) {
listTable.reload({
where:{
path:obj.data.file
where: {
path: obj.data.file
}
,page:{
curr:1
, page: {
curr: 1
}
});
}else{
isRandom=false;
playIndex=obj.tr[0].dataset.index;
} else {
isRandom = false;
playIndex = obj.tr[0].dataset.index;
play(obj.data.file)
}
@@ -103,11 +113,23 @@
table.on('tool(music)', function (obj) {
let data = obj.data;
if(obj.event === 'download'){
if(!data.dir){
window.open(localhost+"/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath="+new Base64().encode(data.file))
if (obj.event === 'download') {
if (!data.dir) {
window.open(localhost + "/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath=" + new Base64().encode(data.file))
}
} else if (obj.event === 'play') {
console.log(data.file)
$.get(localhost + "/nas/music/list.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&path=" + new Base64().encode(data.file), function (obj) {
let json = JSON.parse(obj);
console.log(json)
if(json.code===0){
playIndex=0;
musicLib=json.data;
isRandom=false;
playNext()
}
})
}
});
element.on('nav(menus)', function (elem) {
@@ -126,9 +148,9 @@
, allowSeek: true
, endedCallback: function () {
console.log('播放完成')
if(isRandom){
if (isRandom) {
random()
}else{
} else {
playNext()
}
@@ -141,22 +163,29 @@
$('#footer').load("/html/footer.html");
$('#side').load("/html/body/nas/side.html");
$('#img').click(function () {
isRandom=true;
isRandom = true;
random()
});
$('#download').click(function (){
window.open(localhost+"/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath="+playNow)
$('#download').click(function () {
window.open(localhost + "/nas/music/play.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&random=false&filePath=" + playNow)
})
$('#next').click(function (){
playNext()
})
function playNext(){
if(playIndex===musicLib.length){
playIndex=0;
function playNext() {
if(isRandom){
random()
return ;
}
if(musicLib[playIndex].dir){
if (playIndex === musicLib.length) {
playIndex = 0;
}
if (musicLib[playIndex].dir) {
playIndex++
playNext()
}else{
} else {
play(musicLib[playIndex].file);
playIndex++
}
@@ -166,9 +195,9 @@
$.get(localhost + "/nas/music/random.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk", function (data) {
let json = JSON.parse(data)
if (json.code === 0) {
playNow=json.data
playNow = json.data
player.updateSource({
source: localhost + "/nas/music/play.do?random=false&filePath=" + json.data+"&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
source: localhost + "/nas/music/play.do?random=false&filePath=" + json.data + "&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
});
update(json.data)
player.play()
@@ -181,9 +210,9 @@
function play(file) {
let filePath = escape(new Base64().encode(file))
playNow=filePath
playNow = filePath
player.updateSource({
source: localhost + "/nas/music/play.do?random=false&filePath=" + filePath+"&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
source: localhost + "/nas/music/play.do?random=false&filePath=" + filePath + "&token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk"
});
update(filePath)
player.play()
@@ -192,6 +221,11 @@
function update(fileName) {
$.get(localhost + '/nas/music/find/file.do?token=PlVodzYhvxRQbOHKakpKs2dvnoc43Cnk&path=' + fileName, 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)