mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
feat: unify media recognition and music lifecycle
This commit is contained in:
+15
-11
@@ -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 "/"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user