feat: unify media recognition and music lifecycle

This commit is contained in:
jxxghp
2026-08-12 06:51:58 +08:00
parent b018646f61
commit 97dba2a8ae
96 changed files with 4677 additions and 719 deletions
+15 -11
View File
@@ -670,25 +670,27 @@ class Emby:
# 开始刷新媒体库
if "/" in library_ids:
return self.refresh_root_library()
success = True
for library_id in library_ids:
if library_id != "/":
return self.__refresh_emby_library_by_id(library_id)
refreshed = self.__refresh_emby_library_by_id(library_id)
success = bool(refreshed) and success
logger.info(f"Emby媒体库刷新完成")
return True
return success
def __get_emby_library_id_by_item(self, item: schemas.RefreshMediaItem) -> Optional[str]:
"""
根据媒体信息查询在哪个媒体库,返回要刷新的位置的ID
:param item: {title, year, type, category, target_path}
"""
if not item.title or not item.year or not item.type:
if not item.type or not item.target_path:
return None
if item.type != MediaType.MOVIE.value:
if item.type == MediaType.TV and item.title and item.year:
item_id = self.__get_emby_series_id_by_name(item.title, item.year)
if item_id:
# 存在电视剧,则直接刷新这个电视剧就行
return item_id
else:
elif item.type == MediaType.MOVIE and item.title and item.year:
if self.get_movies(item.title, item.year):
# 已存在,不用刷新
return None
@@ -696,7 +698,7 @@ class Emby:
item_path = Path(item.target_path)
# 匹配子目录
for folder in self.folders:
for subfolder in folder.get("SubFolders"):
for subfolder in folder.get("SubFolders") or []:
try:
# 匹配子目录
subfolder_path = Path(subfolder.get("Path"))
@@ -705,11 +707,13 @@ class Emby:
except Exception as err:
logger.debug(f"匹配子目录出错:{err} - {traceback.format_exc()}")
# 如果找不到,只要路径中有分类目录名就命中
for folder in self.folders:
for subfolder in folder.get("SubFolders"):
if subfolder.get("Path") and re.search(r"[/\\]%s" % item.category,
subfolder.get("Path")):
return folder.get("Id")
if item.category:
for folder in self.folders:
for subfolder in folder.get("SubFolders") or []:
if subfolder.get("Path") and re.search(
r"[/\\]%s" % re.escape(item.category), subfolder.get("Path")
):
return folder.get("Id")
# 刷新根目录
return "/"