From df3c4b7fa982012cd56c8dfbb56dc8cf6e0c9067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Mon, 2 Dec 2024 11:40:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=B8=93=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E6=92=AD=E6=94=BE=E6=AD=8C=E6=9B=B2=E5=92=8C=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E6=AD=8C=E5=8D=95=E6=8E=A5=E5=8F=A3=EF=BC=8C=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E9=BB=98=E8=AE=A4=E5=8F=A3=E4=BB=A4=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E8=A2=AB=E4=BF=AE=E6=94=B9=E4=BA=86=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/httpserver.py | 38 ++++++++++++++++++++++++++++++++ xiaomusic/static/default/app.js | 39 ++++++++++++++++++++++++++++----- xiaomusic/xiaomusic.py | 12 +++++++--- 3 files changed, 81 insertions(+), 8 deletions(-) diff --git a/xiaomusic/httpserver.py b/xiaomusic/httpserver.py index 04c96d5..fa53e32 100644 --- a/xiaomusic/httpserver.py +++ b/xiaomusic/httpserver.py @@ -325,6 +325,44 @@ class UrlInfo(BaseModel): url: str +class DidPlayMusic(BaseModel): + did: str + musicname: str = "" + searchkey: str = "" + + +@app.post("/playmusic") +async def playmusic(data: DidPlayMusic, Verifcation=Depends(verification)): + did = data.did + musicname = data.musicname + searchkey = data.searchkey + if not xiaomusic.did_exist(did): + return {"ret": "Did not exist"} + + log.info(f"playmusic {did} musicname:{musicname} searchkey:{searchkey}") + await xiaomusic.do_play(did, musicname, searchkey) + return {"ret": "OK"} + + +class DidPlayMusicList(BaseModel): + did: str + listname: str = "" + musicname: str = "" + + +@app.post("/playmusiclist") +async def playmusiclist(data: DidPlayMusicList, Verifcation=Depends(verification)): + did = data.did + listname = data.listname + musicname = data.musicname + if not xiaomusic.did_exist(did): + return {"ret": "Did not exist"} + + log.info(f"playmusiclist {did} listname:{listname} musicname:{musicname}") + await xiaomusic.do_play_music_list(did, listname, musicname) + return {"ret": "OK"} + + @app.post("/downloadjson") async def downloadjson(data: UrlInfo, Verifcation=Depends(verification)): log.info(data) diff --git a/xiaomusic/static/default/app.js b/xiaomusic/static/default/app.js index 7b6bc93..6a2d002 100644 --- a/xiaomusic/static/default/app.js +++ b/xiaomusic/static/default/app.js @@ -192,18 +192,32 @@ $(function(){ }); } + function do_play_music_list(listname, musicname) { + $.ajax({ + type: "POST", + url: "/playmusiclist", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({did: did, listname: listname, musicname: musicname}), + success: () => { + console.log("do_play_music_list succ", listname, musicname); + }, + error: () => { + console.log("do_play_music_list failed", listname, musicname); + } + }); + } + $("#play_music_list").on("click", () => { var music_list = $("#music_list").val(); var music_name = $("#music_name").val(); - let cmd = "播放列表" + music_list + "|" + music_name; if (no_warning) { - sendcmd(cmd); + do_play_music_list(music_list, music_name); return; } $.get(`/musicinfo?name=${music_name}`, function(data, status) { console.log(data); if (data.ret == "OK") { - validHost(data.url) && sendcmd(cmd); + validHost(data.url) && do_play_music_list(music_list, music_name); } }); }); @@ -268,6 +282,22 @@ $(function(){ $container.append($button); } + function do_play_music(musicname, searchkey) { + $.ajax({ + type: "POST", + url: "/playmusic", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({did: did, musicname: musicname, searchkey: searchkey}), + success: () => { + console.log("do_play_music succ", musicname, searchkey); + }, + error: () => { + console.log("do_play_music failed", musicname, searchkey); + } + }); + } + + $("#play").on("click", () => { var search_key = $("#music-name").val(); if (search_key == null) { @@ -277,8 +307,7 @@ $(function(){ if (filename == null) { filename = ""; } - let cmd = "播放歌曲" + search_key + "|" + filename; - sendcmd(cmd); + do_play_music(filename, search_key); }); $("#volume").on('change', function () { diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py index c864717..4b458fa 100644 --- a/xiaomusic/xiaomusic.py +++ b/xiaomusic/xiaomusic.py @@ -950,14 +950,17 @@ class XiaoMusic: parts = arg1.split("|") list_name = parts[0] + music_name = "" + if len(parts) > 1: + music_name = parts[1] + return await self.do_play_music_list(did, list_name, music_name) + + async def do_play_music_list(self, did, list_name, music_name=""): list_name = self._find_real_music_list_name(list_name) if list_name not in self.music_list: await self.do_tts(did, f"播放列表{list_name}不存在") return - music_name = "" - if len(parts) > 1: - music_name = parts[1] await self.devices[did].play_music_list(list_name, music_name) # 播放一个播放列表里第几个 @@ -992,6 +995,9 @@ class XiaoMusic: if name == "": name = search_key + return await self.do_play(name, search_key) + + async def do_play(self, did, name, search_key): return await self.devices[did].play(name, search_key) # 本地播放