From 2da12e12d53f1ab723fa2dd6ca5cf126a31dc642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Sun, 7 Jul 2024 06:21:15 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20#81=20=E4=BF=AE=E5=A4=8D=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E5=88=97=E8=A1=A8=E6=B2=A1=E6=9C=89=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E4=B8=8A=E6=AC=A1=E6=92=AD=E6=94=BE=E7=9A=84?= =?UTF-8?q?=E6=AD=8C=E6=9B=B2=EF=BC=8C=E5=B9=B6=E6=8A=8A=E9=9A=8F=E6=9C=BA?= =?UTF-8?q?=E6=92=AD=E6=94=BE=EF=BC=8C=E5=85=A8=E9=83=A8=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=EF=BC=8C=E5=8D=95=E6=9B=B2=E5=BE=AA=E7=8E=AF=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=90=BD=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/config.py | 1 + xiaomusic/xiaomusic.py | 35 ++++++++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/xiaomusic/config.py b/xiaomusic/config.py index c7bf4f3..56641ac 100644 --- a/xiaomusic/config.py +++ b/xiaomusic/config.py @@ -123,6 +123,7 @@ class Config: enable_force_stop: bool = ( os.getenv("XIAOMUSIC_ENABLE_FORCE_STOP", "false").lower() == "true" ) + play_type: int = int(os.getenv("XIAOMUSIC_PLAY_TYPE", "2")) def append_keyword(self, keys, action): for key in keys.split(","): diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py index fc09c8a..9e61bdf 100644 --- a/xiaomusic/xiaomusic.py +++ b/xiaomusic/xiaomusic.py @@ -9,6 +9,7 @@ import re import time import traceback import urllib.parse +from dataclasses import asdict from logging.handlers import RotatingFileHandler from pathlib import Path @@ -64,8 +65,6 @@ class XiaoMusic: # 下载对象 self.download_proc = None - # 单曲循环,全部循环 - self.play_type = PLAY_TYPE_RND self.cur_music = "" self._next_timer = None self._timeout = 0 @@ -102,6 +101,8 @@ class XiaoMusic: self.log.info(f"Startup OK. {debug_config}") def init_config(self): + # 单曲循环,全部循环 + self.play_type = self.config.play_type self.music_path = self.config.music_path self.conf_path = self.config.conf_path if not self.conf_path: @@ -854,18 +855,21 @@ class XiaoMusic: # 单曲循环 async def set_play_type_one(self, **kwargs): self.play_type = PLAY_TYPE_ONE + self.save_play_type() await self.do_tts("已经设置为单曲循环") # 全部循环 async def set_play_type_all(self, **kwargs): self.play_type = PLAY_TYPE_ALL self._gen_play_list() + self.save_play_type() await self.do_tts("已经设置为全部循环") # 随机播放 async def random_play(self, **kwargs): self.play_type = PLAY_TYPE_RND self._gen_play_list() + self.save_play_type() await self.do_tts("已经设置为随机播放") # 刷新列表 @@ -897,7 +901,8 @@ class XiaoMusic: if real_name: self.log.info(f"根据【{list_name}】找到播放列表【{real_name}】") list_name = real_name - self.log.info(f"没找到播放列表【{list_name}】") + else: + self.log.info(f"没找到播放列表【{list_name}】") return list_name # 播放一个播放列表 @@ -917,8 +922,6 @@ class XiaoMusic: music_name = "" if len(parts) > 1: music_name = parts[1] - else: - music_name = self.get_next_music() await self.play(arg1=music_name) async def stop(self, **kwargs): @@ -1014,12 +1017,30 @@ class XiaoMusic: # 保存配置并重新启动 async def saveconfig(self, data): + # 配置文件落地 + self.do_saveconfig(data) + # 更新配置 + self.update_config_from_setting(data) + # 重新初始化 + await self.call_main_thread_function(self.reinit) + + # 配置文件落地 + def do_saveconfig(self, data): # 默认暂时配置保存到 music 目录下 filename = self.getsettingfile() with open(filename, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) - self.update_config_from_setting(data) - await self.call_main_thread_function(self.reinit) + + # 把当前配置落地 + def save_cur_config(self): + data = asdict(self.config) + self.do_saveconfig(data) + self.log.info("save_cur_config ok") + + # 播放类型落地 + def save_play_type(self): + self.config.play_type = self.play_type + self.save_cur_config() def update_config_from_setting(self, data): # 兼容旧配置:一段时间后清理这里的旧代码