将搜索词分为搜索词及文件名两部分,便于更精确搜索以及实现保存下载保存文件名的自定义

This commit is contained in:
张高磊 2024-04-03 14:12:26 +08:00
parent 657af667ef
commit 612eb636be
3 changed files with 17 additions and 12 deletions

View File

@ -39,8 +39,9 @@ $(function(){
}
$("#play").on("click", () => {
name = $("#music-name").val();
let cmd = "播放歌曲"+name;
var search_key = $("#music-name").val();
var filename=$("#music-filename").val();
let cmd = "播放歌曲"+search_key+"|"+filename;
sendcmd(cmd);
});

View File

@ -44,7 +44,8 @@
</div>
<hr>
<div>
<input id="music-name" type="text" placeholder="请输入歌曲名称"></input>
<input id="music-name" type="text" placeholder="请输入搜索关键词(如:MV高清版 周杰伦 七里香)"></input>
<input id="music-filename" type="text" placeholder="请输入保存为的文件名称(如:周杰伦-七里香)"></input>
<button id="play">播放</button>
</div>
</body>

View File

@ -299,7 +299,7 @@ class XiaoMusic:
return True
# 下载歌曲
async def download(self, name):
async def download(self, search_key,name):
if self.download_proc:
try:
self.download_proc.kill()
@ -308,7 +308,7 @@ class XiaoMusic:
sbp_args = (
"yt-dlp",
f"{self.search_prefix}{name}",
f"{self.search_prefix}{search_key}",
"-x",
"--audio-format",
"mp3",
@ -325,7 +325,7 @@ class XiaoMusic:
sbp_args += ("--proxy", f"{self.proxy}")
self.download_proc = await asyncio.create_subprocess_exec(*sbp_args)
await self.do_tts(f"正在下载歌曲{name}")
await self.do_tts(f"正在下载歌曲{search_key}")
# 本地是否存在歌曲
def get_filename(self, name):
@ -484,15 +484,18 @@ class XiaoMusic:
# 播放歌曲
async def play(self, **kwargs):
name = kwargs["arg1"]
if name == "":
search_key,name = kwargs["arg1"].split('|')
#空值填充:
search_key = search_key if search_key else name
name = name if name else search_key
if search_key == "" and name == "":
await self.play_next()
return
return
filename = self.get_filename(name)
if len(filename) <= 0:
await self.download(name)
self.log.info("正在下载中 %s", name)
await self.download(search_key,name)
self.log.info("正在下载中 %s", search_key+":"+name)
await self.download_proc.wait()
# 把文件插入到播放列表里
self.add_download_music(name)