feat: 新增设置项 ignore_tag_dirs 用于忽略读取目录下的标签信息,解决挂载 alist 目录的问题
This commit is contained in:
parent
9ed39d0c02
commit
12532b48d6
@ -106,6 +106,7 @@ class Config:
|
|||||||
"play,set_play_type_rnd,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop",
|
"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")
|
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"))
|
music_path_depth: int = int(os.getenv("XIAOMUSIC_MUSIC_PATH_DEPTH", "10"))
|
||||||
disable_httpauth: bool = (
|
disable_httpauth: bool = (
|
||||||
os.getenv("XIAOMUSIC_DISABLE_HTTPAUTH", "true").lower() == "true"
|
os.getenv("XIAOMUSIC_DISABLE_HTTPAUTH", "true").lower() == "true"
|
||||||
@ -330,3 +331,11 @@ class Config:
|
|||||||
if play_type == PLAY_TYPE_SEQ:
|
if play_type == PLAY_TYPE_SEQ:
|
||||||
return self.play_type_seq_tts_msg
|
return self.play_type_seq_tts_msg
|
||||||
return ""
|
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
|
||||||
|
@ -99,6 +99,9 @@ var vConsole = new window.VConsole();
|
|||||||
<label for="exclude_dirs">忽略目录(逗号分割):</label>
|
<label for="exclude_dirs">忽略目录(逗号分割):</label>
|
||||||
<input id="exclude_dirs" type="text" value="@eaDir,tmp" />
|
<input id="exclude_dirs" type="text" value="@eaDir,tmp" />
|
||||||
|
|
||||||
|
<label for="ignore_tag_dirs">不扫码标签信息目录(逗号分割):</label>
|
||||||
|
<input id="ignore_tag_dirs" type="text" value="" />
|
||||||
|
|
||||||
<label for="music_path_depth">目录深度:</label>
|
<label for="music_path_depth">目录深度:</label>
|
||||||
<input id="music_path_depth" type="number" value="10" />
|
<input id="music_path_depth" type="number" value="10" />
|
||||||
|
|
||||||
|
@ -98,6 +98,9 @@ var vConsole = new window.VConsole();
|
|||||||
<label for="exclude_dirs">忽略目录(逗号分割):</label>
|
<label for="exclude_dirs">忽略目录(逗号分割):</label>
|
||||||
<input id="exclude_dirs" type="text" value="@eaDir,tmp" />
|
<input id="exclude_dirs" type="text" value="@eaDir,tmp" />
|
||||||
|
|
||||||
|
<label for="ignore_tag_dirs">不扫码标签信息目录(逗号分割):</label>
|
||||||
|
<input id="ignore_tag_dirs" type="text" value="" />
|
||||||
|
|
||||||
<label for="music_path_depth">目录深度:</label>
|
<label for="music_path_depth">目录深度:</label>
|
||||||
<input id="music_path_depth" type="number" value="10" />
|
<input id="music_path_depth" type="number" value="10" />
|
||||||
|
|
||||||
|
@ -990,3 +990,15 @@ def try_add_access_control_param(config, url):
|
|||||||
).geturl()
|
).geturl()
|
||||||
|
|
||||||
return new_url
|
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 # 文件不在排除目录中
|
||||||
|
@ -49,6 +49,7 @@ from xiaomusic.utils import (
|
|||||||
get_local_music_duration,
|
get_local_music_duration,
|
||||||
get_web_music_duration,
|
get_web_music_duration,
|
||||||
list2str,
|
list2str,
|
||||||
|
not_in_dirs,
|
||||||
parse_cookie_string,
|
parse_cookie_string,
|
||||||
parse_str_to_dict,
|
parse_str_to_dict,
|
||||||
save_picture_by_base64,
|
save_picture_by_base64,
|
||||||
@ -577,6 +578,9 @@ class XiaoMusic:
|
|||||||
|
|
||||||
all_music_tags = self.try_load_from_tag_cache()
|
all_music_tags = self.try_load_from_tag_cache()
|
||||||
all_music_tags.update(self.all_music_tags) # 保证最新
|
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():
|
for name, file_or_url in only_items.items():
|
||||||
start = time.perf_counter()
|
start = time.perf_counter()
|
||||||
if name not in all_music_tags:
|
if name not in all_music_tags:
|
||||||
@ -584,7 +588,9 @@ class XiaoMusic:
|
|||||||
if self.is_web_music(name):
|
if self.is_web_music(name):
|
||||||
# TODO: 网络歌曲获取歌曲额外信息
|
# TODO: 网络歌曲获取歌曲额外信息
|
||||||
pass
|
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(
|
all_music_tags[name] = extract_audio_metadata(
|
||||||
file_or_url, self.config.picture_cache_path
|
file_or_url, self.config.picture_cache_path
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user