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):