From 4d30dee74c29dfc437e40698f624fe1e269e4df9 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 29 Jun 2026 21:37:58 +0800 Subject: [PATCH] feat(mediaserver): add item count to media library details across multiple servers --- app/modules/emby/emby.py | 1 + app/modules/jellyfin/jellyfin.py | 1 + app/modules/plex/plex.py | 1 + app/modules/trimemedia/trimemedia.py | 1 + app/modules/ugreen/ugreen.py | 1 + app/modules/zspace/zspace.py | 1 + app/schemas/mediaserver.py | 2 ++ 7 files changed, 8 insertions(+) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index f9a5f0cb..68bba8b7 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -171,6 +171,7 @@ class Emby: name=library.get("Name"), path=library.get("Path"), type=library_type, + item_count=self.get_items_count(library.get("Id")), image=image, link=f'{self._playhost or self._host}web/index.html' f'#!/videos?{server_query}parentId={library.get("Id")}', diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index dbe5ed7d..3318f63e 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -173,6 +173,7 @@ class Jellyfin: name=library.get("Name"), path=library.get("Path"), type=library_type, + item_count=self.get_items_count(library.get("Id")), image=image, link=link, server_type="jellyfin" diff --git a/app/modules/plex/plex.py b/app/modules/plex/plex.py index 2f214bd7..c051ee95 100644 --- a/app/modules/plex/plex.py +++ b/app/modules/plex/plex.py @@ -152,6 +152,7 @@ class Plex: name=library.title, path=library.locations, type=library_type, + item_count=self.get_items_count(library.key), image_list=image_list, link=f"{self._playhost or self._host}web/index.html#!/media/{self._plex.machineIdentifier}" f"/com.plexapp.plugins.library?source={library.key}&X-Plex-Token={self._token}", diff --git a/app/modules/trimemedia/trimemedia.py b/app/modules/trimemedia/trimemedia.py index 0b81ca75..ea6dc4f1 100644 --- a/app/modules/trimemedia/trimemedia.py +++ b/app/modules/trimemedia/trimemedia.py @@ -194,6 +194,7 @@ class TrimeMedia: name=library.name, type=library_type, path=library.dir_list, + item_count=self.get_items_count(library.guid), image_list=[ f"{self._api.host}{img_path}?w=256" for img_path in library.posters or [] diff --git a/app/modules/ugreen/ugreen.py b/app/modules/ugreen/ugreen.py index 2eea751a..3aa71e5c 100644 --- a/app/modules/ugreen/ugreen.py +++ b/app/modules/ugreen/ugreen.py @@ -568,6 +568,7 @@ class Ugreen: name=lib_name, type=library_type, path=lib_path, + item_count=lib.get("video_count") or 0, image_list=image_list, link=self.__build_root_url(), server_type="ugreen", diff --git a/app/modules/zspace/zspace.py b/app/modules/zspace/zspace.py index e91e03fd..6f8a5790 100644 --- a/app/modules/zspace/zspace.py +++ b/app/modules/zspace/zspace.py @@ -248,6 +248,7 @@ class ZSpace: name=library.get("Name"), path=library.get("Path"), type=library_type, + item_count=self.get_items_count(library.get("Id")), image=image, link=f'{self._playhost or self._host}web/index.html' f'#!/videos?serverId={self.serverid}&parentId={library.get("Id")}', diff --git a/app/schemas/mediaserver.py b/app/schemas/mediaserver.py index fcfc381f..baafb5d7 100644 --- a/app/schemas/mediaserver.py +++ b/app/schemas/mediaserver.py @@ -72,6 +72,8 @@ class MediaServerLibrary(BaseModel): path: Optional[Union[str, list]] = None # 类型 type: Optional[str] = None + # 媒体库内媒体数量 + item_count: Optional[int] = None # 封面图 image: Optional[str] = None # 封面图列表