From c674e32046b7ea59eb115617e6bfb4ca0df9796e Mon Sep 17 00:00:00 2001 From: thsrite Date: Mon, 8 Jan 2024 13:05:09 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=A6=96=E9=A1=B5=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E8=A7=82=E7=9C=8B=E3=80=81=E6=9C=80=E8=BF=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8E=92=E9=99=A4=E9=BB=91=E5=90=8D=E5=8D=95=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/mediaserver.py | 24 ++++++++++++++++++++++-- app/modules/emby/emby.py | 1 + app/modules/jellyfin/jellyfin.py | 1 + app/modules/plex/plex.py | 1 + app/schemas/mediaserver.py | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/chain/mediaserver.py b/app/chain/mediaserver.py index 68df03b9..64d1d621 100644 --- a/app/chain/mediaserver.py +++ b/app/chain/mediaserver.py @@ -48,13 +48,33 @@ class MediaServerChain(ChainBase): """ 获取媒体服务器正在播放信息 """ - return self.run_module("mediaserver_playing", count=count, server=server, username=username) + playing_items = self.run_module("mediaserver_playing", count=100, server=server, username=username) + # 判断是否在同步的媒体数据中 + exists_items = [] + for item in playing_items: + if self.dboper.exists(mtype=item.type, + title=item.title, + year=item.year): + exists_items.append(item) + if len(exists_items) == count: + break + return exists_items def latest(self, count: int = 20, server: str = None, username: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器最新入库条目 """ - return self.run_module("mediaserver_latest", count=count, server=server, username=username) + latest_items = self.run_module("mediaserver_latest", count=100, server=server, username=username) + # 判断是否在同步的媒体数据中 + exists_items = [] + for item in latest_items: + if self.dboper.exists(mtype=item.type, + title=item.title, + year=item.subtitle): + exists_items.append(item) + if len(exists_items) == count: + break + return exists_items def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]: """ diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index 1c603fbf..9306ae68 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -1002,6 +1002,7 @@ class Emby(metaclass=Singleton): ret_resume.append(schemas.MediaServerPlayItem( id=item.get("Id"), title=title, + year=item.get("ProductionYear"), subtitle=subtitle, type=item_type, image=image, diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index 81d55e41..4b298a85 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -679,6 +679,7 @@ class Jellyfin(metaclass=Singleton): ret_resume.append(schemas.MediaServerPlayItem( id=item.get("Id"), title=title, + year=item.get("ProductionYear"), subtitle=subtitle, type=item_type, image=image, diff --git a/app/modules/plex/plex.py b/app/modules/plex/plex.py index 7c52a975..bf89352b 100644 --- a/app/modules/plex/plex.py +++ b/app/modules/plex/plex.py @@ -626,6 +626,7 @@ class Plex(metaclass=Singleton): ret_resume.append(schemas.MediaServerPlayItem( id=item.key, title=title, + year=item.year, subtitle=subtitle, type=item_type, image=image, diff --git a/app/schemas/mediaserver.py b/app/schemas/mediaserver.py index 582ad2d7..373efa58 100644 --- a/app/schemas/mediaserver.py +++ b/app/schemas/mediaserver.py @@ -151,6 +151,7 @@ class MediaServerPlayItem(BaseModel): """ id: Optional[Union[str, int]] = None title: Optional[str] = None + year: Optional[str] = None subtitle: Optional[str] = None type: Optional[str] = None image: Optional[str] = None