feat(mediaserver): add item count retrieval for various media servers

This commit is contained in:
jxxghp
2026-06-29 10:45:10 +08:00
parent 8bf826faa0
commit 9eb71c744b
17 changed files with 799 additions and 157 deletions

View File

@@ -253,6 +253,19 @@ class PlexModule(_ModuleBase, _MediaServerBase[Plex]):
return server_obj.get_items(library_id, start_index, limit)
return None
def mediaserver_items_count(self, server: str, library_id: Union[str, int]) -> Optional[int]:
"""
获取指定媒体库可同步的媒体条目总数
:param server: 媒体服务器名称
:param library_id: 媒体库ID
:return: 媒体条目总数查询失败时返回None
"""
server_obj: Plex = self.get_instance(server)
if server_obj:
return server_obj.get_items_count(library_id)
return None
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
"""
媒体库项目详情

View File

@@ -575,6 +575,22 @@ class Plex:
user_state=user_state,
)
def get_items_count(self, parent: Union[str, int]) -> Optional[int]:
"""
获取指定媒体库可同步的媒体条目总数
:param parent: 媒体库ID
:return: 媒体条目总数查询失败时返回None
"""
if not parent or not self._plex:
return None
try:
section = self._plex.library.sectionByID(int(parent))
return int(section.totalSize) if section else None
except Exception as err:
logger.error(f"查询媒体库 {parent} 的媒体总数出错:{str(err)}")
return None
def get_items(self, parent: Union[str, int], start_index: Optional[int] = 0, limit: Optional[int] = -1) \
-> Generator[MediaServerItem | None, Any, None]:
"""