feat: #106 网页上显示音箱当前状态(播放中or空闲中)以及当前的播放模式
This commit is contained in:
parent
0189a00155
commit
ee6f4ee4e4
@ -90,8 +90,15 @@ def searchmusic():
|
|||||||
def playingmusic():
|
def playingmusic():
|
||||||
did = request.args.get("did")
|
did = request.args.get("did")
|
||||||
if not xiaomusic.did_exist(did):
|
if not xiaomusic.did_exist(did):
|
||||||
return ""
|
return {"ret": "Did not exist"}
|
||||||
return xiaomusic.playingmusic(did)
|
|
||||||
|
is_playing = xiaomusic.isplaying(did)
|
||||||
|
cur_music = xiaomusic.playingmusic(did)
|
||||||
|
return {
|
||||||
|
"ret": "OK",
|
||||||
|
"is_playing": is_playing,
|
||||||
|
"cur_music": cur_music,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.route("/isplaying", methods=["GET"])
|
@app.route("/isplaying", methods=["GET"])
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
$(function(){
|
$(function(){
|
||||||
$container=$("#cmds");
|
$container=$("#cmds");
|
||||||
append_op_button_name("全部循环");
|
|
||||||
append_op_button_name("单曲循环");
|
const PLAY_TYPE_ONE = 0; // 单曲循环
|
||||||
append_op_button_name("随机播放");
|
const PLAY_TYPE_ALL = 1; // 全部循环
|
||||||
|
const PLAY_TYPE_RND = 2; // 随机播放
|
||||||
|
append_op_button("play_type_all", "全部循环", "全部循环");
|
||||||
|
append_op_button("play_type_one", "单曲循环", "单曲循环");
|
||||||
|
append_op_button("play_type_rnd", "随机播放", "随机播放");
|
||||||
|
|
||||||
append_op_button_name("刷新列表");
|
append_op_button_name("刷新列表");
|
||||||
append_op_button_name("下一首");
|
append_op_button_name("下一首");
|
||||||
append_op_button_name("关机");
|
append_op_button_name("关机");
|
||||||
@ -42,6 +47,17 @@ $(function(){
|
|||||||
.text(cur_device.name)
|
.text(cur_device.name)
|
||||||
.prop('selected', value === did);
|
.prop('selected', value === did);
|
||||||
$("#did").append(option);
|
$("#did").append(option);
|
||||||
|
|
||||||
|
if (cur_device.play_type == PLAY_TYPE_ALL) {
|
||||||
|
$("#play_type_all").css('background-color', '#b1a8f3');
|
||||||
|
$("#play_type_all").text('✔️ 全部循环');
|
||||||
|
} else if (cur_device.play_type == PLAY_TYPE_ONE) {
|
||||||
|
$("#play_type_one").css('background-color', '#b1a8f3');
|
||||||
|
$("#play_type_one").text('✔️ 单曲循环');
|
||||||
|
} else if (cur_device.play_type == PLAY_TYPE_RND) {
|
||||||
|
$("#play_type_rnd").css('background-color', '#b1a8f3');
|
||||||
|
$("#play_type_rnd").text('✔️ 随机播放');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -123,14 +139,17 @@ $(function(){
|
|||||||
});
|
});
|
||||||
|
|
||||||
function append_op_button_name(name) {
|
function append_op_button_name(name) {
|
||||||
append_op_button(name, name);
|
append_op_button(null, name, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
function append_op_button(name, cmd) {
|
function append_op_button(id, name, cmd) {
|
||||||
// 创建按钮
|
// 创建按钮
|
||||||
const $button = $("<button>");
|
const $button = $("<button>");
|
||||||
$button.text(name);
|
$button.text(name);
|
||||||
$button.attr("type", "button");
|
$button.attr("type", "button");
|
||||||
|
if (id !== null) {
|
||||||
|
$button.attr("id", id);
|
||||||
|
}
|
||||||
|
|
||||||
// 设置按钮点击事件
|
// 设置按钮点击事件
|
||||||
$button.on("click", () => {
|
$button.on("click", () => {
|
||||||
@ -172,6 +191,9 @@ $(function(){
|
|||||||
if (cmd == "刷新列表") {
|
if (cmd == "刷新列表") {
|
||||||
setTimeout(refresh_music_list, 3000);
|
setTimeout(refresh_music_list, 3000);
|
||||||
}
|
}
|
||||||
|
if (["全部循环", "单曲循环", "随机播放"].includes(cmd)) {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
error: () => {
|
error: () => {
|
||||||
// 请求失败时执行的操作
|
// 请求失败时执行的操作
|
||||||
@ -204,7 +226,13 @@ $(function(){
|
|||||||
function get_playing_music() {
|
function get_playing_music() {
|
||||||
$.get(`/playingmusic?did=${did}`, function(data, status) {
|
$.get(`/playingmusic?did=${did}`, function(data, status) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
$("#playering-music").text(data);
|
if (data.ret == "OK") {
|
||||||
|
if (data.is_playing) {
|
||||||
|
$("#playering-music").text(`【播放中】 ${data.cur_music}`);
|
||||||
|
} else {
|
||||||
|
$("#playering-music").text(`【空闲中】 ${data.cur_music}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,8 +45,8 @@ var vConsole = new window.VConsole();
|
|||||||
<datalist id="autocomplete-list"></datalist>
|
<datalist id="autocomplete-list"></datalist>
|
||||||
<input id="music-name" type="text" placeholder="请输入搜索关键词(如:MV高清版 周杰伦 七里香)" list="autocomplete-list"></input>
|
<input id="music-name" type="text" placeholder="请输入搜索关键词(如:MV高清版 周杰伦 七里香)" list="autocomplete-list"></input>
|
||||||
<input id="music-filename" type="text" placeholder="请输入保存为的文件名称(如:周杰伦七里香)"></input>
|
<input id="music-filename" type="text" placeholder="请输入保存为的文件名称(如:周杰伦七里香)"></input>
|
||||||
|
<div>
|
||||||
<button id="play">播放</button>
|
<button id="play">播放</button>
|
||||||
<div class="container">
|
|
||||||
<div id="playering-music" class="text"></div>
|
<div id="playering-music" class="text"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -106,6 +106,7 @@ $(function(){
|
|||||||
data: JSON.stringify(data),
|
data: JSON.stringify(data),
|
||||||
success: (msg) => {
|
success: (msg) => {
|
||||||
alert(msg);
|
alert(msg);
|
||||||
|
location.reload();
|
||||||
},
|
},
|
||||||
error: (msg) => {
|
error: (msg) => {
|
||||||
alert(msg);
|
alert(msg);
|
||||||
|
@ -29,35 +29,6 @@ input,select {
|
|||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container{
|
|
||||||
width: 280px;
|
|
||||||
overflow: hidden;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
@keyframes text-scroll {
|
|
||||||
0% {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
25% {
|
|
||||||
left: 50%;
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
left: 0%;
|
|
||||||
}
|
|
||||||
75% {
|
|
||||||
left: -50%;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
left: -100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.text {
|
|
||||||
white-space: nowrap;
|
|
||||||
font-weight: bold;
|
|
||||||
position: relative;
|
|
||||||
animation: text-scroll 10s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rows {
|
.rows {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -97,3 +68,12 @@ footer {
|
|||||||
vertical-align: middle; /* 确保与复选框垂直居中对齐 */
|
vertical-align: middle; /* 确保与复选框垂直居中对齐 */
|
||||||
margin-left: 1px; /* 给复选框和标签之间一些距离,如果需要的话 */
|
margin-left: 1px; /* 给复选框和标签之间一些距离,如果需要的话 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
margin: 10px;
|
||||||
|
width: 150px;
|
||||||
|
height: 50px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user