1
0
mirror of https://github.com/hanxi/xiaomusic.git synced 2026-05-18 11:06:47 +08:00

fix: 监控文件夹仅对音乐格式生效,减少不必要的刷新 (#441)

* feat: 监测音乐文件夹变化更新歌曲列表

* fix:增加预设依赖

* Revert "fix:增加预设依赖"

This reverts commit 3705424e98.

* Revert "feat: 监测音乐文件夹变化更新歌曲列表"

This reverts commit 939c59b908.

* feat: 监测音乐文件夹变化更新歌曲列表

新增环境变量:
XIAOMUSIC_ENABLE_FILE_WATCH #控制目录监控开关
XIAOMUSIC_FILE_WATCH_DEBOUNCE  #控制刷新目录任务刷新延迟

也可通过网页设置,默认更换关闭

* fix:设置文字描述修正

* 监控文件夹仅对音乐格式生效
This commit is contained in:
AisukaYuki
2025-03-31 17:57:23 +08:00
committed by GitHub
parent f86b737224
commit 5e4cf20338

View File

@@ -793,9 +793,9 @@ class XiaoMusic:
loop = asyncio.get_event_loop()
# 延时配置项 file_watch_debounce
self._file_watch_handler = XiaoMusicPathWatch(
callback=self._on_file_change,
debounce_delay=self.config.file_watch_debounce,
loop=loop,
callback = self._on_file_change,
debounce_delay = self.config.file_watch_debounce,
loop = loop,
)
# 创建监控 music_path 目录对象
self._observer = Observer()
@@ -806,7 +806,7 @@ class XiaoMusic:
self.log.info(f"已启动对 {self.music_path} 的目录监控。")
def _on_file_change(self):
self.log.info("检测到音乐目录文件变化,正在刷新歌曲列表。")
self.log.info("检测到目录音乐文件变化,正在刷新歌曲列表。")
self._gen_all_music_list()
def stop_file_watch(self):
@@ -2183,7 +2183,7 @@ class XiaoMusicDevice:
return "全部"
# 目录监控类,使用延迟防抖
# 目录监控类,使用延迟防抖,仅监控音乐文件
class XiaoMusicPathWatch(FileSystemEventHandler):
def __init__(self, callback, debounce_delay, loop):
self.callback = callback
@@ -2192,7 +2192,20 @@ class XiaoMusicPathWatch(FileSystemEventHandler):
self._debounce_handle = None
def on_any_event(self, event):
self.schedule_callback()
if event.is_directory:
return # 忽略目录事件
# 处理文件事件
src_ext = os.path.splitext(event.src_path)[1].lower()
# 处理移动事件的目标路径
if hasattr(event, 'dest_path'):
dest_ext = os.path.splitext(event.dest_path)[1].lower()
if dest_ext in SUPPORT_MUSIC_TYPE:
self.schedule_callback()
return
if src_ext in SUPPORT_MUSIC_TYPE:
self.schedule_callback()
def schedule_callback(self):
def _execute_callback():