refactor(module): simplify service instantiation with generics

This commit is contained in:
InfinityPacer
2024-09-27 04:04:56 +08:00
parent 5efcd6e6be
commit 2ce3ddb75a
19 changed files with 244 additions and 242 deletions

View File

@@ -1,8 +1,7 @@
from typing import Optional, Tuple, Union, Any, List, Generator, Dict
from typing import Optional, Tuple, Union, Any, List, Generator
from app import schemas
from app.core.context import MediaInfo
from app.helper.mediaserver import MediaServerHelper
from app.log import logger
from app.modules import _ModuleBase, _MediaServerBase
from app.modules.plex.plex import Plex
@@ -10,22 +9,14 @@ from app.schemas import MediaServerConf
from app.schemas.types import MediaType
class PlexModule(_ModuleBase, _MediaServerBase):
class PlexModule(_ModuleBase, _MediaServerBase[Plex]):
def init_module(self) -> None:
"""
初始化模块
"""
# 读取媒体服务器配置
self._instances: Dict[str, Plex] = {}
self._configs: Dict[str, MediaServerConf] = {}
mediaservers = MediaServerHelper().get_mediaservers()
if not mediaservers:
return
for server in mediaservers:
if server.type == "plex" and server.enabled:
self._configs[server.name] = server
self._instances[server.name] = Plex(**server.config, sync_libraries=server.sync_libraries)
super().init_service(service_name=Plex.__name__.lower(),
service_type=lambda conf: Plex(**conf.config, sync_libraries=conf.sync_libraries))
@staticmethod
def get_name() -> str:
@@ -168,7 +159,8 @@ class PlexModule(_ModuleBase, _MediaServerBase):
return server.get_librarys(hidden)
return None
def mediaserver_items(self, server: str, library_id: str, start_index: int = 0, limit: int = 100) -> Optional[Generator]:
def mediaserver_items(self, server: str, library_id: str, start_index: int = 0, limit: int = 100) \
-> Optional[Generator]:
"""
媒体库项目列表
"""