diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 7c38a3c6..e41c6e49 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -450,14 +450,16 @@ class ChainBase(metaclass=ABCMeta): """ return self.run_module("torrent_files", tid=tid, downloader=downloader) - def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[ExistMediaInfo]: + def media_exists(self, mediainfo: MediaInfo, itemid: str = None, + server: str = None) -> Optional[ExistMediaInfo]: """ 判断媒体文件是否存在 :param mediainfo: 识别的媒体信息 :param itemid: 媒体服务器ItemID + :param server: 媒体服务器 :return: 如不存在返回None,存在时返回信息,包括每季已存在所有集{type: movie/tv, seasons: {season: [episodes]}} """ - return self.run_module("media_exists", mediainfo=mediainfo, itemid=itemid) + return self.run_module("media_exists", mediainfo=mediainfo, itemid=itemid, server=server) def media_files(self, mediainfo: MediaInfo) -> Optional[List[FileItem]]: """ diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index 5953e8e8..da0e9d85 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -101,14 +101,22 @@ class EmbyModule(_ModuleBase, _MediaServerBase[Emby]): return result return None - def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[schemas.ExistMediaInfo]: + def media_exists(self, mediainfo: MediaInfo, itemid: str = None, + server: str = None) -> Optional[schemas.ExistMediaInfo]: """ 判断媒体文件是否存在 :param mediainfo: 识别的媒体信息 :param itemid: 媒体服务器ItemID + :param server: 媒体服务器名称 :return: 如不存在返回None,存在时返回信息,包括每季已存在所有集{type: movie/tv, seasons: {season: [episodes]}} """ - for name, server in self.get_instances().items(): + if server: + servers = [(server, self.get_instance(server))] + else: + servers = self.get_instances().items() + for name, server in servers: + if not server: + continue if mediainfo.type == MediaType.MOVIE: if itemid: movie = server.get_iteminfo(itemid) diff --git a/app/modules/jellyfin/__init__.py b/app/modules/jellyfin/__init__.py index cdcb45a0..0ceb3367 100644 --- a/app/modules/jellyfin/__init__.py +++ b/app/modules/jellyfin/__init__.py @@ -101,14 +101,22 @@ class JellyfinModule(_ModuleBase, _MediaServerBase[Jellyfin]): return result return None - def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[schemas.ExistMediaInfo]: + def media_exists(self, mediainfo: MediaInfo, itemid: str = None, + server: str = None) -> Optional[schemas.ExistMediaInfo]: """ 判断媒体文件是否存在 :param mediainfo: 识别的媒体信息 :param itemid: 媒体服务器ItemID + :param server: 媒体服务器名称 :return: 如不存在返回None,存在时返回信息,包括每季已存在所有集{type: movie/tv, seasons: {season: [episodes]}} """ - for name, server in self.get_instances().items(): + if server: + servers = [(server, self.get_instance(server))] + else: + servers = self.get_instances().items() + for name, server in servers: + if not server: + continue if mediainfo.type == MediaType.MOVIE: if itemid: movie = server.get_iteminfo(itemid) diff --git a/app/modules/plex/__init__.py b/app/modules/plex/__init__.py index 381de1a2..61d9d475 100644 --- a/app/modules/plex/__init__.py +++ b/app/modules/plex/__init__.py @@ -82,14 +82,22 @@ class PlexModule(_ModuleBase, _MediaServerBase[Plex]): return result return None - def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[schemas.ExistMediaInfo]: + def media_exists(self, mediainfo: MediaInfo, itemid: str = None, + server: str = None) -> Optional[schemas.ExistMediaInfo]: """ 判断媒体文件是否存在 :param mediainfo: 识别的媒体信息 :param itemid: 媒体服务器ItemID + :param server: 媒体服务器名称 :return: 如不存在返回None,存在时返回信息,包括每季已存在所有集{type: movie/tv, seasons: {season: [episodes]}} """ - for name, server in self.get_instances().items(): + if server: + servers = [(server, self.get_instance(server))] + else: + servers = self.get_instances().items() + for name, server in servers: + if not server: + continue if mediainfo.type == MediaType.MOVIE: if itemid: movie = server.get_iteminfo(itemid)