From cb9f41cb65b59ee17e24a2bb05f96fe402aa8455 Mon Sep 17 00:00:00 2001 From: sowevo Date: Tue, 19 Nov 2024 22:41:55 +0800 Subject: [PATCH] =?UTF-8?q?plex=E7=9A=84item=5Fid=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=85=A8=E8=B7=AF=E5=BE=84=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=9B=BE=E7=89=87=E6=97=B6=E5=85=BC=E5=AE=B9=E5=A4=96?= =?UTF-8?q?=E7=BD=91=E5=9C=B0=E5=9D=80=E4=B8=BAPlex=E7=9A=84=E5=AE=98?= =?UTF-8?q?=E6=96=B9=E8=BD=AC=E5=8F=91=E5=9C=B0=E5=9D=80https://app.plex.t?= =?UTF-8?q?v=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/plex/plex.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/app/modules/plex/plex.py b/app/modules/plex/plex.py index 09ba5a29..b04d2753 100644 --- a/app/modules/plex/plex.py +++ b/app/modules/plex/plex.py @@ -294,7 +294,7 @@ class Plex: return videos.key, season_episodes def get_remote_image_by_id(self, - item_id: str, + item_id: str, image_type: str, depth: int = 0, plex_url: bool = True) -> Optional[str]: @@ -310,12 +310,16 @@ class Plex: return None try: image_url = None - ekey = f"/library/metadata/{item_id}" + ekey = item_id item = self._plex.fetchItem(ekey=ekey) if not item: return None # 如果配置了外网播放地址以及Token,则默认从Plex媒体服务器获取图片,否则返回有外网地址的图片资源 - if self._playhost and self._token and plex_url: + # Plex外网播放地址这个框里目前可以填两种地址 + # 1. Plex的官方转发地址https://app.plex.tv, 2. 自己处理的端口转发地址 + # 如果使用的是1的官方转发地址,那么就不能走这个逻辑,因为官方转发地址无法获取到图片 + if (self._playhost and "app.plex.tv" not in self._playhost + and self._token and plex_url): query = {"X-Plex-Token": self._token} if image_type == "Poster": if item.thumb: @@ -346,8 +350,8 @@ class Plex: image_url = image.key break # 如果最后还是找不到,则递归父级进行查找 - if not image_url and hasattr(item, "parentRatingKey"): - return self.get_remote_image_by_id(item_id=item.parentRatingKey, + if not image_url and hasattr(item, "parentKey"): + return self.get_remote_image_by_id(item_id=item.parentKey, image_type=image_type, depth=depth + 1) return image_url @@ -665,7 +669,7 @@ class Plex: "S" + str(message.get('Metadata', {}).get('parentIndex')), "E" + str(message.get('Metadata', {}).get('index')), message.get('Metadata', {}).get('title')) - eventItem.item_id = message.get('Metadata', {}).get('ratingKey') + eventItem.item_id = message.get('Metadata', {}).get('key') eventItem.season_id = message.get('Metadata', {}).get('parentIndex') eventItem.episode_id = message.get('Metadata', {}).get('index') @@ -680,7 +684,7 @@ class Plex: eventItem.item_name = "%s %s" % ( message.get('Metadata', {}).get('title'), "(" + str(message.get('Metadata', {}).get('year')) + ")") - eventItem.item_id = message.get('Metadata', {}).get('ratingKey') + eventItem.item_id = message.get('Metadata', {}).get('key') if len(message.get('Metadata', {}).get('summary')) > 100: eventItem.overview = str(message.get('Metadata', {}).get('summary'))[:100] + "..." else: