From 750711611b70222e2e7c94e304780bae94d57871 Mon Sep 17 00:00:00 2001 From: jeblove <249972068@qq.com> Date: Mon, 11 Mar 2024 00:15:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix=20=E8=AF=AD=E6=B3=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/emby/emby.py | 4 ++-- app/modules/jellyfin/jellyfin.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index 40428d3d..1c1fb758 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -465,11 +465,11 @@ class Emby: req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type) try: res = RequestUtils().get_res(req_url) - if res or res.status_code == 404: + if res and res.status_code != 404: logger.info("影片图片链接:{}".format(res.url)) return res.url else: - logger.info("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) + logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) return None except Exception as e: logger.error(f"连接Items/Id/Images出错:" + str(e)) diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index ce6fbf85..47cc711a 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -450,11 +450,11 @@ class Jellyfin: req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type) try: res = RequestUtils().get_res(req_url) - if res or res.status_code == 404: + if res and res.status_code != 404: logger.info("影片图片链接:{}".format(res.url)) return res.url else: - logger.info("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) + logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) return None except Exception as e: logger.error(f"连接Items/Id/Images出错:" + str(e)) From dd063bb16bc052ee6512565388db3e53588df01d Mon Sep 17 00:00:00 2001 From: jeblove <249972068@qq.com> Date: Mon, 11 Mar 2024 01:57:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix=20=E6=92=AD=E6=94=BE=E5=89=A7=E9=9B=86?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/jellyfin/jellyfin.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index 47cc711a..54e61381 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -446,6 +446,10 @@ class Jellyfin: if not self._playhost: logger.error("Jellyfin外网播放地址未能获取或为空") return None + # 检测是否为TV + parent_id = self.get_itemId_ancestors(item_id, 0, "ParentBackdropItemId") + if parent_id: + item_id = parent_id req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type) try: @@ -460,6 +464,25 @@ class Jellyfin: logger.error(f"连接Items/Id/Images出错:" + str(e)) return None + def get_itemId_ancestors(self, item_id, index, key): + """ + 获得itemId的父item + :param item_id: 在Jellyfin中剧集的ID (S01E02的E02的item_id) + :param index: 第几个json对象 + :param key: 需要得到父item中的键值对 + """ + req_url = "%sItems/%s/Ancestors?api_key=%s" % (self._host, item_id, self._apikey) + try: + res = RequestUtils().get_res(req_url) + if res: + return res.json()[index].get(key) + else: + logger.error(f"Items/Id/Ancestors 未获取到返回数据") + return False + except Exception as e: + logger.error(f"连接Items/Id/Ancestors出错:" + str(e)) + return False + def refresh_root_library(self) -> bool: """ 通知Jellyfin刷新整个媒体库 From 3c8c6e5375cec9c1ec489f4ccc167cd03e08c8a0 Mon Sep 17 00:00:00 2001 From: jeblove <249972068@qq.com> Date: Mon, 11 Mar 2024 11:27:24 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix=20=E8=AF=AD=E6=B3=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/emby/emby.py | 3 ++- app/modules/jellyfin/jellyfin.py | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index 1c1fb758..c0888564 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -452,11 +452,12 @@ class Emby: return None return None - def generate_external_image_link(self, item_id, image_type): + def generate_external_image_link(self, item_id: str, image_type: str) -> Optional[str]: """ 根据ItemId和imageType查询本地对应图片 :param item_id: 在Emby中的ID :param image_type: 图片类型,如Backdrop、Primary + :return: 图片对应在外网播放器中的URL """ if not self._playhost: logger.error("Emby外网播放地址未能获取或为空") diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index 54e61381..afcea7e8 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -437,11 +437,12 @@ class Jellyfin: return None return None - def generate_external_image_link(self, item_id, image_type): + def generate_external_image_link(self, item_id: str, image_type: str) -> Optional[str]: """ 根据ItemId和imageType查询本地对应图片 :param item_id: 在Jellyfin中的ID :param image_type: 图片类型,如Backdrop、Primary + :return: 图片对应在外网播放器中的URL """ if not self._playhost: logger.error("Jellyfin外网播放地址未能获取或为空") @@ -464,12 +465,13 @@ class Jellyfin: logger.error(f"连接Items/Id/Images出错:" + str(e)) return None - def get_itemId_ancestors(self, item_id, index, key): + def get_itemId_ancestors(self, item_id: str, index: int, key: str) -> Optional[Union[str, list, int, dict, bool]]: """ 获得itemId的父item :param item_id: 在Jellyfin中剧集的ID (S01E02的E02的item_id) :param index: 第几个json对象 :param key: 需要得到父item中的键值对 + :return key对应类型的值 """ req_url = "%sItems/%s/Ancestors?api_key=%s" % (self._host, item_id, self._apikey) try: @@ -478,10 +480,10 @@ class Jellyfin: return res.json()[index].get(key) else: logger.error(f"Items/Id/Ancestors 未获取到返回数据") - return False + return None except Exception as e: logger.error(f"连接Items/Id/Ancestors出错:" + str(e)) - return False + return None def refresh_root_library(self) -> bool: """