This commit is contained in:
jxxghp
2024-09-12 08:24:55 +08:00
parent f9895b2edd
commit e2436ba94f
8 changed files with 25 additions and 14 deletions

View File

@@ -137,8 +137,9 @@ def playing(server: str, count: int = 12,
@router.get("/library", summary="媒体库列表", response_model=List[schemas.MediaServerLibrary])
def library(server: str, userinfo: schemas.TokenPayload = Depends(verify_token)) -> Any:
def library(server: str, hidden: bool = False,
userinfo: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
获取媒体服务器媒体库列表
"""
return MediaServerChain().librarys(server=server, username=userinfo.username) or []
return MediaServerChain().librarys(server=server, username=userinfo.username, hidden=hidden) or []

View File

@@ -21,11 +21,11 @@ class MediaServerChain(ChainBase):
self.dboper = MediaServerOper()
self.mediaserverhelper = MediaServerHelper()
def librarys(self, server: str, username: str = None) -> List[schemas.MediaServerLibrary]:
def librarys(self, server: str, username: str = None, hidden: bool = False) -> List[schemas.MediaServerLibrary]:
"""
获取媒体服务器所有媒体库
"""
return self.run_module("mediaserver_librarys", server=server, username=username)
return self.run_module("mediaserver_librarys", server=server, username=username, hidden=hidden)
def items(self, server: str, library_id: Union[str, int]) -> List[schemas.MediaServerItem]:
"""
@@ -85,7 +85,8 @@ class MediaServerChain(ChainBase):
logger.info(f"开始同步媒体库 {server_name} 的数据 ...")
for library in self.librarys(server_name):
# 同步黑名单 跳过
if library.id not in sync_libraries:
if sync_libraries and library.id not in sync_libraries:
logger.info(f"{server_name} 未在同步媒体库列表中,跳过")
continue
logger.info(f"正在同步 {server_name} 媒体库 {library.name} ...")
library_count = 0

View File

@@ -161,13 +161,14 @@ class EmbyModule(_ModuleBase, _MediaServerBase):
return media_statistics
def mediaserver_librarys(self, server: str,
username: str = None) -> Optional[List[schemas.MediaServerLibrary]]:
username: str = None,
hidden: bool = False) -> Optional[List[schemas.MediaServerLibrary]]:
"""
媒体库列表
"""
server: Emby = self.get_server(server)
if server:
return server.get_librarys(username)
return server.get_librarys(username=username, hidden=hidden)
return None
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:

View File

@@ -128,7 +128,7 @@ class Emby:
logger.error(f"连接User/Views 出错:" + str(e))
return []
def get_librarys(self, username: str = None) -> List[schemas.MediaServerLibrary]:
def get_librarys(self, username: str = None, hidden: bool = False) -> List[schemas.MediaServerLibrary]:
"""
获取媒体服务器所有媒体库列表
"""
@@ -136,6 +136,8 @@ class Emby:
return []
libraries = []
for library in self.__get_emby_librarys(username) or []:
if hidden and self._sync_libraries and library.get("Id") not in self._sync_libraries:
continue
match library.get("CollectionType"):
case "movies":
library_type = MediaType.MOVIE.value

View File

@@ -159,13 +159,14 @@ class JellyfinModule(_ModuleBase, _MediaServerBase):
return media_statistics
def mediaserver_librarys(self, server: str = None,
username: str = None) -> Optional[List[schemas.MediaServerLibrary]]:
username: str = None,
hidden: bool = False) -> Optional[List[schemas.MediaServerLibrary]]:
"""
媒体库列表
"""
server: Jellyfin = self.get_server(server)
if server:
return server.get_librarys(username)
return server.get_librarys(username=username, hidden=hidden)
return None
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:

View File

@@ -124,7 +124,7 @@ class Jellyfin:
logger.error(f"连接Users/Views 出错:" + str(e))
return []
def get_librarys(self, username: str = None) -> List[schemas.MediaServerLibrary]:
def get_librarys(self, username: str = None, hidden: bool = False) -> List[schemas.MediaServerLibrary]:
"""
获取媒体服务器所有媒体库列表
"""
@@ -132,6 +132,8 @@ class Jellyfin:
return []
libraries = []
for library in self.__get_jellyfin_librarys(username) or []:
if hidden and self._sync_libraries and library.get("Id") not in self._sync_libraries:
continue
match library.get("CollectionType"):
case "movies":
library_type = MediaType.MOVIE.value

View File

@@ -147,13 +147,14 @@ class PlexModule(_ModuleBase, _MediaServerBase):
media_statistics.append(media_statistic)
return media_statistics
def mediaserver_librarys(self, server: str = None, **kwargs) -> Optional[List[schemas.MediaServerLibrary]]:
def mediaserver_librarys(self, server: str = None, hidden: bool = False,
**kwargs) -> Optional[List[schemas.MediaServerLibrary]]:
"""
媒体库列表
"""
server: Plex = self.get_server(server)
if server:
return server.get_librarys()
return server.get_librarys(hidden)
return None
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:

View File

@@ -100,7 +100,7 @@ class Plex:
return [f"{self._host.rstrip('/') + url}?X-Plex-Token={self._token}" for url in
list(poster_urls.keys())[:total_size]]
def get_librarys(self) -> List[schemas.MediaServerLibrary]:
def get_librarys(self, hidden: bool = False) -> List[schemas.MediaServerLibrary]:
"""
获取媒体服务器所有媒体库列表
"""
@@ -113,6 +113,8 @@ class Plex:
return []
libraries = []
for library in self._libraries:
if hidden and self._sync_libraries and library.key not in self._sync_libraries:
continue
match library.type:
case "movie":
library_type = MediaType.MOVIE.value