From 54988d6397c5b551f0f9757f3e3638ec1d95c10f Mon Sep 17 00:00:00 2001 From: zhanglijun <1074176954@qq.com> Date: Sat, 30 Nov 2024 13:51:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dfanart=E5=AD=A3?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=B8=8B=E8=BD=BD=E7=BC=BA=E5=A4=B1/?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/media.py | 26 ++++++++++++++++++++++++++ app/modules/fanart/__init__.py | 34 ++++++++++++++++++++++------------ 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/app/chain/media.py b/app/chain/media.py index 1c145c34..4e03ee99 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -552,6 +552,29 @@ class MediaChain(ChainBase, metaclass=Singleton): if not parent: parent = self.storagechain.get_parent_item(fileitem) __save_file(_fileitem=parent, _path=image_path, _content=content) + # 额外fanart季图片:poster thumb banner + image_dict = self.metadata_img(mediainfo=mediainfo) + if image_dict: + for image_name, image_url in image_dict.items(): + if image_name.startswith("season"): + image_path = filepath.with_name(image_name) + # 只下载当前刮削季的图片 + image_season = "00" if "specials" in image_name else image_name[6:8] + if image_season != str(season_meta.begin_season).rjust(2, '0'): + logger.info(f"当前刮削季为:{season_meta.begin_season},跳过文件:{image_path}") + continue + if not overwrite and self.storagechain.get_file_item(storage=fileitem.storage, + path=image_path): + logger.info(f"已存在图片文件:{image_path}") + continue + # 下载图片 + content = __download_image(image_url) + # 保存图片文件到当前目录 + if content: + if not parent: + parent = self.storagechain.get_parent_item(fileitem) + __save_file(_fileitem=parent, _path=image_path, _content=content) + # 判断当前目录是不是剧集根目录 if not season_meta.season: # 是否已存在 @@ -570,6 +593,9 @@ class MediaChain(ChainBase, metaclass=Singleton): image_dict = self.metadata_img(mediainfo=mediainfo) if image_dict: for image_name, image_url in image_dict.items(): + # 不下载季图片 + if image_name.startswith("season"): + continue image_path = filepath / image_name if not overwrite and self.storagechain.get_file_item(storage=fileitem.storage, path=image_path): diff --git a/app/modules/fanart/__init__.py b/app/modules/fanart/__init__.py index 4bc7a74d..f0afab07 100644 --- a/app/modules/fanart/__init__.py +++ b/app/modules/fanart/__init__.py @@ -377,20 +377,30 @@ class FanartModule(_ModuleBase): continue if not isinstance(images, list): continue - # 按欢迎程度倒排 - images.sort(key=lambda x: int(x.get('likes', 0)), reverse=True) - # 取第一张图片 - image_obj = images[0] + # 图片属性xx_path image_name = self.__name(name) - image_season = image_obj.get('season') - # 设置图片 - if image_name.startswith("season") and image_season: - # 季图片格式 seasonxx-poster - image_name = f"season{str(image_season).rjust(2, '0')}-{image_name[6:]}" - if not mediainfo.get_image(image_name): - # 没有图片才设置 - mediainfo.set_image(image_name, image_obj.get('url')) + if image_name.startswith("season"): + # 季图片,图片格式seasonxx-xxxx/season-specials-xxxx + for image_obj in images: + image_season = image_obj.get('season') + if image_season is not None: + # 包括poster,thumb,banner + if image_season == '0': + season_image = f"season-specials-{image_name[6:]}" + else: + season_image = f"season{str(image_season).rjust(2, '0')}-{image_name[6:]}" + # 设置图片,没有图片才设置 + if not mediainfo.get_image(season_image): + mediainfo.set_image(season_image, image_obj.get('url')) + else: + # 其他图片,按欢迎程度倒排 + images.sort(key=lambda x: int(x.get('likes', 0)), reverse=True) + # 取第一张图片 + image_obj = images[0] + # 设置图片,没有图片才设置 + if not mediainfo.get_image(image_name): + mediainfo.set_image(image_name, image_obj.get('url')) return mediainfo