diff --git a/xiaomusic/config.py b/xiaomusic/config.py index 058d046..ca1dd6a 100644 --- a/xiaomusic/config.py +++ b/xiaomusic/config.py @@ -6,6 +6,11 @@ import os from dataclasses import asdict, dataclass, field from typing import get_type_hints +from xiaomusic.const import ( + PLAY_TYPE_ALL, + PLAY_TYPE_ONE, + PLAY_TYPE_RND, +) from xiaomusic.utils import validate_proxy @@ -161,6 +166,15 @@ class Config: get_ask_by_mina: bool = ( os.getenv("XIAOMUSIC_GET_ASK_BY_MINA", "false").lower() == "true" ) + play_type_one_tts_msg: str = os.getenv( + "XIAOMUSIC_PLAY_TYPE_ONE_TTS_MSG", "已经设置为单曲循环" + ) + play_type_all_tts_msg: str = os.getenv( + "XIAOMUSIC_PLAY_TYPE_ALL_TTS_MSG", "已经设置为全部循环" + ) + play_type_rnd_tts_msg: str = os.getenv( + "XIAOMUSIC_PLAY_TYPE_RND_TTS_MSG", "已经设置为随机播放" + ) def append_keyword(self, keys, action): for key in keys.split(","): @@ -280,3 +294,12 @@ class Config: os.makedirs(self.conf_path) cookies_path = os.path.join(self.conf_path, "yt-dlp-cookie.txt") return cookies_path + + def get_play_type_tts(self, play_type): + if play_type == PLAY_TYPE_ONE: + return self.play_type_one_tts_msg + if play_type == PLAY_TYPE_ALL: + return self.play_type_all_tts_msg + if play_type == PLAY_TYPE_RND: + return self.play_type_rnd_tts_msg + return "" diff --git a/xiaomusic/const.py b/xiaomusic/const.py index ce2b48f..e8954d1 100644 --- a/xiaomusic/const.py +++ b/xiaomusic/const.py @@ -14,12 +14,6 @@ PLAY_TYPE_ONE = 0 # 单曲循环 PLAY_TYPE_ALL = 1 # 全部循环 PLAY_TYPE_RND = 2 # 随机播放 -PLAY_TYPE_TTS = { - PLAY_TYPE_ONE: "已经设置为单曲循环", - PLAY_TYPE_ALL: "已经设置为全部循环", - PLAY_TYPE_RND: "已经设置为随机播放", -} - # 需要采用 mina 获取对话记录的设备型号 GET_ASK_BY_MINA = { "M01", diff --git a/xiaomusic/crontab.py b/xiaomusic/crontab.py index e2030a5..bb8c39c 100644 --- a/xiaomusic/crontab.py +++ b/xiaomusic/crontab.py @@ -63,6 +63,14 @@ class Crontab: self.add_job(expression, job) + # 设置播放类型任务 + def add_job_set_play_type(self, expression, xiaomusic, did, arg1, **kwargs): + async def job(): + play_type = int(arg1) + await xiaomusic.set_play_type(did, play_type, False) + + self.add_job(expression, job) + def add_job_cron(self, xiaomusic, cron): expression = cron["expression"] # cron 计划格式 name = cron["name"] # stop, play, play_music_list, tts diff --git a/xiaomusic/static/default/setting.html b/xiaomusic/static/default/setting.html index 56b29a6..cfab9c9 100644 --- a/xiaomusic/static/default/setting.html +++ b/xiaomusic/static/default/setting.html @@ -170,6 +170,13 @@ var vConsole = new window.VConsole(); + + + + + + + diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py index d36ae96..c4b9433 100644 --- a/xiaomusic/xiaomusic.py +++ b/xiaomusic/xiaomusic.py @@ -31,7 +31,6 @@ from xiaomusic.const import ( PLAY_TYPE_ALL, PLAY_TYPE_ONE, PLAY_TYPE_RND, - PLAY_TYPE_TTS, SUPPORT_MUSIC_TYPE, ) from xiaomusic.crontab import Crontab @@ -885,15 +884,18 @@ class XiaoMusic: # 设置为单曲循环 async def set_play_type_one(self, did="", **kwargs): - await self.devices[did].set_play_type(PLAY_TYPE_ONE) + await self.set_play_type(did, PLAY_TYPE_ONE) # 设置为全部循环 async def set_play_type_all(self, did="", **kwargs): - await self.devices[did].set_play_type(PLAY_TYPE_ALL) + await self.set_play_type(did, PLAY_TYPE_ALL) # 设置为随机播放 async def set_random_play(self, did="", **kwargs): - await self.devices[did].set_play_type(PLAY_TYPE_RND) + await self.set_play_type(did, PLAY_TYPE_RND) + + async def set_play_type(self, did="", play_type=PLAY_TYPE_RND, dotts=True): + await self.devices[did].set_play_type(play_type, dotts) # 设置为刷新列表 async def gen_music_list(self, **kwargs): @@ -1758,11 +1760,12 @@ class XiaoMusicDevice: self.log.info("get_volume. volume:%d", volume) return volume - async def set_play_type(self, play_type): + async def set_play_type(self, play_type, dotts=True): self.device.play_type = play_type self.xiaomusic.save_cur_config() - tts = PLAY_TYPE_TTS[play_type] - await self.do_tts(tts) + if dotts: + tts = self.config.get_play_type_tts(play_type) + await self.do_tts(tts) self.update_playlist() async def play_music_list(self, list_name, music_name):