diff --git a/app/api/endpoints/mediaserver.py b/app/api/endpoints/mediaserver.py index 27fe3bee..32edc6a7 100644 --- a/app/api/endpoints/mediaserver.py +++ b/app/api/endpoints/mediaserver.py @@ -125,10 +125,7 @@ def latest(count: int = 18, """ 获取媒体服务器最新入库条目 """ - if not settings.MEDIASERVER: - return [] - mediaserver = settings.MEDIASERVER.split(",")[0] - return MediaServerChain().latest(server=mediaserver, count=count) + return MediaServerChain().latest(count=count) or [] @router.get("/playing", summary="正在播放条目", response_model=List[schemas.MediaServerPlayItem]) @@ -137,10 +134,7 @@ def playing(count: int = 12, """ 获取媒体服务器正在播放条目 """ - if not settings.MEDIASERVER: - return [] - mediaserver = settings.MEDIASERVER.split(",")[0] - return MediaServerChain().playing(server=mediaserver, count=count) + return MediaServerChain().playing(count=count) or [] @router.get("/library", summary="媒体库列表", response_model=List[schemas.MediaServerLibrary]) @@ -148,7 +142,4 @@ def library(_: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 获取媒体服务器媒体库列表 """ - if not settings.MEDIASERVER: - return [] - mediaserver = settings.MEDIASERVER.split(",")[0] - return MediaServerChain().librarys(server=mediaserver) + return MediaServerChain().librarys() or [] diff --git a/app/chain/mediaserver.py b/app/chain/mediaserver.py index f70949d1..23b988d0 100644 --- a/app/chain/mediaserver.py +++ b/app/chain/mediaserver.py @@ -20,7 +20,7 @@ class MediaServerChain(ChainBase): super().__init__() self.dboper = MediaServerOper() - def librarys(self, server: str) -> List[schemas.MediaServerLibrary]: + def librarys(self, server: str = None) -> List[schemas.MediaServerLibrary]: """ 获取媒体服务器所有媒体库 """ @@ -44,17 +44,17 @@ class MediaServerChain(ChainBase): """ return self.run_module("mediaserver_tv_episodes", server=server, item_id=item_id) - def playing(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def playing(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器正在播放信息 """ - return self.run_module("mediaserver_playing", server=server, count=count) + return self.run_module("mediaserver_playing", count=count, server=server) - def latest(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def latest(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器最新入库条目 """ - return self.run_module("mediaserver_latest", server=server, count=count) + return self.run_module("mediaserver_latest", count=count, server=server) def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]: """ diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index 51256119..0e77a676 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -103,11 +103,11 @@ class EmbyModule(_ModuleBase): media_statistic.user_count = self.emby.get_user_count() return [media_statistic] - def mediaserver_librarys(self, server: str) -> Optional[List[schemas.MediaServerLibrary]]: + def mediaserver_librarys(self, server: str = None) -> Optional[List[schemas.MediaServerLibrary]]: """ 媒体库列表 """ - if server != "emby": + if server and server != "emby": return None return self.emby.get_librarys() @@ -142,11 +142,11 @@ class EmbyModule(_ModuleBase): episodes=episodes ) for season, episodes in seasoninfo.items()] - def mediaserver_playing(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_playing(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器正在播放信息 """ - if server != "emby": + if server and server != "emby": return [] return self.emby.get_resume(count) @@ -158,10 +158,10 @@ class EmbyModule(_ModuleBase): return None return self.emby.get_play_url(item_id) - def mediaserver_latest(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_latest(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器最新入库条目 """ - if server != "emby": + if server and server != "emby": return [] return self.emby.get_latest(count) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index d1266ce4..b7e4b1fe 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -91,7 +91,10 @@ class Emby(metaclass=Singleton): if not self._host or not self._apikey: return [] libraries = [] + black_list = (settings.MEDIASERVER_SYNC_BLACKLIST or '').split(",") for library in self.__get_emby_librarys() or []: + if library.get("Name") in black_list: + continue match library.get("CollectionType"): case "movies": library_type = MediaType.MOVIE.value diff --git a/app/modules/jellyfin/__init__.py b/app/modules/jellyfin/__init__.py index d80d608b..494a72d4 100644 --- a/app/modules/jellyfin/__init__.py +++ b/app/modules/jellyfin/__init__.py @@ -101,11 +101,11 @@ class JellyfinModule(_ModuleBase): media_statistic.user_count = self.jellyfin.get_user_count() return [media_statistic] - def mediaserver_librarys(self, server: str) -> Optional[List[schemas.MediaServerLibrary]]: + def mediaserver_librarys(self, server: str = None) -> Optional[List[schemas.MediaServerLibrary]]: """ 媒体库列表 """ - if server != "jellyfin": + if server and server != "jellyfin": return None return self.jellyfin.get_librarys() @@ -140,11 +140,11 @@ class JellyfinModule(_ModuleBase): episodes=episodes ) for season, episodes in seasoninfo.items()] - def mediaserver_playing(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_playing(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器正在播放信息 """ - if server != "jellyfin": + if server and server != "jellyfin": return [] return self.jellyfin.get_resume(count) @@ -156,10 +156,10 @@ class JellyfinModule(_ModuleBase): return None return self.jellyfin.get_play_url(item_id) - def mediaserver_latest(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_latest(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器最新入库条目 """ - if server != "jellyfin": + if server and server != "jellyfin": return [] return self.jellyfin.get_latest(count) diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index d3c13fd7..127dbd2a 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -70,7 +70,10 @@ class Jellyfin(metaclass=Singleton): if not self._host or not self._apikey: return [] libraries = [] + black_list = (settings.MEDIASERVER_SYNC_BLACKLIST or '').split(",") for library in self.__get_jellyfin_librarys() or []: + if library.get("Name") in black_list: + continue match library.get("CollectionType"): case "movies": library_type = MediaType.MOVIE.value diff --git a/app/modules/plex/__init__.py b/app/modules/plex/__init__.py index ce193030..e3d4b9ee 100644 --- a/app/modules/plex/__init__.py +++ b/app/modules/plex/__init__.py @@ -95,11 +95,11 @@ class PlexModule(_ModuleBase): media_statistic.user_count = 1 return [media_statistic] - def mediaserver_librarys(self, server: str) -> Optional[List[schemas.MediaServerLibrary]]: + def mediaserver_librarys(self, server: str = None) -> Optional[List[schemas.MediaServerLibrary]]: """ 媒体库列表 """ - if server != "plex": + if server and server != "plex": return None return self.plex.get_librarys() @@ -134,19 +134,19 @@ class PlexModule(_ModuleBase): episodes=episodes ) for season, episodes in seasoninfo.items()] - def mediaserver_playing(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_playing(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器正在播放信息 """ - if server != "plex": + if server and server != "plex": return [] return self.plex.get_resume(count) - def mediaserver_latest(self, server: str, count: int = 20) -> List[schemas.MediaServerPlayItem]: + def mediaserver_latest(self, count: int = 20, server: str = None) -> List[schemas.MediaServerPlayItem]: """ 获取媒体服务器最新入库条目 """ - if server != "plex": + if server and server != "plex": return [] return self.plex.get_latest(count) diff --git a/app/modules/plex/plex.py b/app/modules/plex/plex.py index dae7a458..fe985129 100644 --- a/app/modules/plex/plex.py +++ b/app/modules/plex/plex.py @@ -108,7 +108,10 @@ class Plex(metaclass=Singleton): logger.error(f"获取媒体服务器所有媒体库列表出错:{str(err)}") return [] libraries = [] + black_list = (settings.MEDIASERVER_SYNC_BLACKLIST or '').split(",") for library in self._libraries: + if library.title in black_list: + continue match library.type: case "movie": library_type = MediaType.MOVIE.value