diff --git a/xiaomusic/config.py b/xiaomusic/config.py
index 933633f..498ad34 100644
--- a/xiaomusic/config.py
+++ b/xiaomusic/config.py
@@ -106,6 +106,7 @@ class Config:
"play,set_play_type_rnd,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop",
)
exclude_dirs: str = os.getenv("XIAOMUSIC_EXCLUDE_DIRS", "@eaDir,tmp")
+ ignore_tag_dirs: str = os.getenv("XIAOMUSIC_IGNORE_TAG_DIRS", "")
music_path_depth: int = int(os.getenv("XIAOMUSIC_MUSIC_PATH_DEPTH", "10"))
disable_httpauth: bool = (
os.getenv("XIAOMUSIC_DISABLE_HTTPAUTH", "true").lower() == "true"
@@ -330,3 +331,11 @@ class Config:
if play_type == PLAY_TYPE_SEQ:
return self.play_type_seq_tts_msg
return ""
+
+ def get_ignore_tag_dirs(self):
+ ignore_tag_absolute_dirs = []
+ for ignore_tag_dir in self.ignore_tag_dirs.split(","):
+ if ignore_tag_dir:
+ ignore_tag_absolute_path = os.path.abspath(ignore_tag_dir)
+ ignore_tag_absolute_dirs.append(ignore_tag_absolute_path)
+ return ignore_tag_absolute_dirs
diff --git a/xiaomusic/static/default/setting.html b/xiaomusic/static/default/setting.html
index 67f3fef..6cfe458 100644
--- a/xiaomusic/static/default/setting.html
+++ b/xiaomusic/static/default/setting.html
@@ -99,6 +99,9 @@ var vConsole = new window.VConsole();
+
+
+
diff --git a/xiaomusic/static/default_past/setting.html b/xiaomusic/static/default_past/setting.html
index 5ab5d05..f7a59a8 100644
--- a/xiaomusic/static/default_past/setting.html
+++ b/xiaomusic/static/default_past/setting.html
@@ -98,6 +98,9 @@ var vConsole = new window.VConsole();
+
+
+
diff --git a/xiaomusic/utils.py b/xiaomusic/utils.py
index 3d969c4..7b38ec9 100644
--- a/xiaomusic/utils.py
+++ b/xiaomusic/utils.py
@@ -990,3 +990,15 @@ def try_add_access_control_param(config, url):
).geturl()
return new_url
+
+
+# 判断文件在不在排除目录列表
+def not_in_dirs(filename, ignore_absolute_dirs):
+ file_absolute_path = os.path.abspath(filename)
+ file_dir = os.path.dirname(file_absolute_path)
+ for ignore_dir in ignore_absolute_dirs:
+ if file_dir.startswith(ignore_dir):
+ log.info(f"{file_dir} in {ignore_dir}")
+ return False # 文件在排除目录中
+
+ return True # 文件不在排除目录中
diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py
index ecf026f..6f6be7d 100644
--- a/xiaomusic/xiaomusic.py
+++ b/xiaomusic/xiaomusic.py
@@ -49,6 +49,7 @@ from xiaomusic.utils import (
get_local_music_duration,
get_web_music_duration,
list2str,
+ not_in_dirs,
parse_cookie_string,
parse_str_to_dict,
save_picture_by_base64,
@@ -577,6 +578,9 @@ class XiaoMusic:
all_music_tags = self.try_load_from_tag_cache()
all_music_tags.update(self.all_music_tags) # 保证最新
+
+ ignore_tag_absolute_dirs = self.config.get_ignore_tag_dirs()
+ self.log.info(f"ignore_tag_absolute_dirs: {ignore_tag_absolute_dirs}")
for name, file_or_url in only_items.items():
start = time.perf_counter()
if name not in all_music_tags:
@@ -584,7 +588,9 @@ class XiaoMusic:
if self.is_web_music(name):
# TODO: 网络歌曲获取歌曲额外信息
pass
- elif os.path.exists(file_or_url):
+ elif os.path.exists(file_or_url) and not_in_dirs(
+ file_or_url, ignore_tag_absolute_dirs
+ ):
all_music_tags[name] = extract_audio_metadata(
file_or_url, self.config.picture_cache_path
)