mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
add ModuleBases
This commit is contained in:
@@ -92,3 +92,35 @@ class _MessageBase:
|
|||||||
if message.mtype.value not in switchs:
|
if message.mtype.value not in switchs:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class _DownloaderBase:
|
||||||
|
"""
|
||||||
|
下载器基类
|
||||||
|
"""
|
||||||
|
|
||||||
|
_servers: Dict[str, Any] = {}
|
||||||
|
_default_server: Any = None
|
||||||
|
_default_server_name: str = None
|
||||||
|
|
||||||
|
def get_server(self, name: str = None) -> Optional[Any]:
|
||||||
|
"""
|
||||||
|
获取服务器,name为空则返回默认服务器
|
||||||
|
"""
|
||||||
|
if name:
|
||||||
|
return self._servers.get(name)
|
||||||
|
return self._default_server
|
||||||
|
|
||||||
|
|
||||||
|
class _MediaServerBase:
|
||||||
|
"""
|
||||||
|
媒体服务器基类
|
||||||
|
"""
|
||||||
|
|
||||||
|
_servers: Dict[str, Any] = {}
|
||||||
|
|
||||||
|
def get_server(self, name: str) -> Optional[Any]:
|
||||||
|
"""
|
||||||
|
获取Plex服务器
|
||||||
|
"""
|
||||||
|
return self._servers.get(name)
|
||||||
|
|||||||
@@ -4,20 +4,19 @@ from app import schemas
|
|||||||
from app.core.context import MediaInfo
|
from app.core.context import MediaInfo
|
||||||
from app.helper.mediaserver import MediaServerHelper
|
from app.helper.mediaserver import MediaServerHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase, _MediaServerBase
|
||||||
from app.modules.emby.emby import Emby
|
from app.modules.emby.emby import Emby
|
||||||
from app.schemas.types import MediaType
|
from app.schemas.types import MediaType
|
||||||
|
|
||||||
|
|
||||||
class EmbyModule(_ModuleBase):
|
class EmbyModule(_ModuleBase, _MediaServerBase):
|
||||||
_servers: Dict[str, Emby] = {}
|
|
||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
"""
|
"""
|
||||||
初始化模块
|
初始化模块
|
||||||
"""
|
"""
|
||||||
# 读取媒体服务器配置
|
# 读取媒体服务器配置
|
||||||
self._servers = {}
|
self._servers: Dict[str, Emby] = {}
|
||||||
mediaservers = MediaServerHelper().get_mediaservers()
|
mediaservers = MediaServerHelper().get_mediaservers()
|
||||||
if not mediaservers:
|
if not mediaservers:
|
||||||
return
|
return
|
||||||
@@ -25,12 +24,6 @@ class EmbyModule(_ModuleBase):
|
|||||||
if server.type == "emby" and server.enabled:
|
if server.type == "emby" and server.enabled:
|
||||||
self._servers[server.name] = Emby(**server.config)
|
self._servers[server.name] = Emby(**server.config)
|
||||||
|
|
||||||
def get_server(self, name: str) -> Optional[Emby]:
|
|
||||||
"""
|
|
||||||
获取Emby服务器
|
|
||||||
"""
|
|
||||||
return self._servers.get(name)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_name() -> str:
|
def get_name() -> str:
|
||||||
return "Emby"
|
return "Emby"
|
||||||
@@ -88,7 +81,7 @@ class EmbyModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
source = args.get("source")
|
source = args.get("source")
|
||||||
if source:
|
if source:
|
||||||
server = self.get_server(source)
|
server: Emby = self.get_server(source)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.get_webhook_message(form, args)
|
return server.get_webhook_message(form, args)
|
||||||
@@ -152,10 +145,10 @@ class EmbyModule(_ModuleBase):
|
|||||||
媒体数量统计
|
媒体数量统计
|
||||||
"""
|
"""
|
||||||
if server:
|
if server:
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
servers = [server_obj]
|
servers = [server]
|
||||||
else:
|
else:
|
||||||
servers = self._servers.values()
|
servers = self._servers.values()
|
||||||
media_statistics = []
|
media_statistics = []
|
||||||
@@ -172,27 +165,27 @@ class EmbyModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
媒体库列表
|
媒体库列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_librarys(username)
|
return server.get_librarys(username)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
||||||
"""
|
"""
|
||||||
媒体库项目列表
|
媒体库项目列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_items(library_id)
|
return server.get_items(library_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
||||||
"""
|
"""
|
||||||
媒体库项目详情
|
媒体库项目详情
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_iteminfo(item_id)
|
return server.get_iteminfo(item_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_tv_episodes(self, server: str,
|
def mediaserver_tv_episodes(self, server: str,
|
||||||
@@ -200,10 +193,10 @@ class EmbyModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取剧集信息
|
获取剧集信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
_, seasoninfo = server_obj.get_tv_episodes(item_id=item_id)
|
_, seasoninfo = server.get_tv_episodes(item_id=item_id)
|
||||||
if not seasoninfo:
|
if not seasoninfo:
|
||||||
return []
|
return []
|
||||||
return [schemas.MediaServerSeasonInfo(
|
return [schemas.MediaServerSeasonInfo(
|
||||||
@@ -216,26 +209,26 @@ class EmbyModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取媒体服务器正在播放信息
|
获取媒体服务器正在播放信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_resume(num=count, username=username)
|
return server.get_resume(num=count, username=username)
|
||||||
|
|
||||||
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
获取媒体库播放地址
|
获取媒体库播放地址
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server_obj.get_play_url(item_id)
|
return server.get_play_url(item_id)
|
||||||
|
|
||||||
def mediaserver_latest(self, server: str,
|
def mediaserver_latest(self, server: str,
|
||||||
count: int = 20, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
count: int = 20, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器最新入库条目
|
获取媒体服务器最新入库条目
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Emby = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_latest(num=count, username=username)
|
return server.get_latest(num=count, username=username)
|
||||||
|
|||||||
@@ -4,20 +4,19 @@ from app import schemas
|
|||||||
from app.core.context import MediaInfo
|
from app.core.context import MediaInfo
|
||||||
from app.helper.mediaserver import MediaServerHelper
|
from app.helper.mediaserver import MediaServerHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase, _MediaServerBase
|
||||||
from app.modules.jellyfin.jellyfin import Jellyfin
|
from app.modules.jellyfin.jellyfin import Jellyfin
|
||||||
from app.schemas.types import MediaType
|
from app.schemas.types import MediaType
|
||||||
|
|
||||||
|
|
||||||
class JellyfinModule(_ModuleBase):
|
class JellyfinModule(_ModuleBase, _MediaServerBase):
|
||||||
_servers: Dict[str, Jellyfin] = {}
|
|
||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
"""
|
"""
|
||||||
初始化模块
|
初始化模块
|
||||||
"""
|
"""
|
||||||
# 读取媒体服务器配置
|
# 读取媒体服务器配置
|
||||||
self._servers = {}
|
self._servers: Dict[str, Jellyfin] = {}
|
||||||
mediaservers = MediaServerHelper().get_mediaservers()
|
mediaservers = MediaServerHelper().get_mediaservers()
|
||||||
if not mediaservers:
|
if not mediaservers:
|
||||||
return
|
return
|
||||||
@@ -25,12 +24,6 @@ class JellyfinModule(_ModuleBase):
|
|||||||
if server.type == "jellyfin" and server.enabled:
|
if server.type == "jellyfin" and server.enabled:
|
||||||
self._servers[server.name] = Jellyfin(**server.config)
|
self._servers[server.name] = Jellyfin(**server.config)
|
||||||
|
|
||||||
def get_server(self, name: str) -> Optional[Jellyfin]:
|
|
||||||
"""
|
|
||||||
获取Jellyfin服务器
|
|
||||||
"""
|
|
||||||
return self._servers.get(name)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_name() -> str:
|
def get_name() -> str:
|
||||||
return "Jellyfin"
|
return "Jellyfin"
|
||||||
@@ -88,7 +81,7 @@ class JellyfinModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
source = args.get("source")
|
source = args.get("source")
|
||||||
if source:
|
if source:
|
||||||
server = self.get_server(source)
|
server: Jellyfin = self.get_server(source)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.get_webhook_message(body)
|
return server.get_webhook_message(body)
|
||||||
@@ -150,10 +143,10 @@ class JellyfinModule(_ModuleBase):
|
|||||||
媒体数量统计
|
媒体数量统计
|
||||||
"""
|
"""
|
||||||
if server:
|
if server:
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
servers = [server_obj]
|
servers = [server]
|
||||||
else:
|
else:
|
||||||
servers = self._servers.values()
|
servers = self._servers.values()
|
||||||
media_statistics = []
|
media_statistics = []
|
||||||
@@ -170,27 +163,27 @@ class JellyfinModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
媒体库列表
|
媒体库列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_librarys(username)
|
return server.get_librarys(username)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
||||||
"""
|
"""
|
||||||
媒体库项目列表
|
媒体库项目列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_items(library_id)
|
return server.get_items(library_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
||||||
"""
|
"""
|
||||||
媒体库项目详情
|
媒体库项目详情
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_iteminfo(item_id)
|
return server.get_iteminfo(item_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_tv_episodes(self, server: str,
|
def mediaserver_tv_episodes(self, server: str,
|
||||||
@@ -198,10 +191,10 @@ class JellyfinModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取剧集信息
|
获取剧集信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
_, seasoninfo = server_obj.get_tv_episodes(item_id=item_id)
|
_, seasoninfo = server.get_tv_episodes(item_id=item_id)
|
||||||
if not seasoninfo:
|
if not seasoninfo:
|
||||||
return []
|
return []
|
||||||
return [schemas.MediaServerSeasonInfo(
|
return [schemas.MediaServerSeasonInfo(
|
||||||
@@ -214,26 +207,26 @@ class JellyfinModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取媒体服务器正在播放信息
|
获取媒体服务器正在播放信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_resume(num=count, username=username)
|
return server.get_resume(num=count, username=username)
|
||||||
|
|
||||||
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
获取媒体库播放地址
|
获取媒体库播放地址
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server_obj.get_play_url(item_id)
|
return server.get_play_url(item_id)
|
||||||
|
|
||||||
def mediaserver_latest(self, server: str,
|
def mediaserver_latest(self, server: str,
|
||||||
count: int = 20, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
count: int = 20, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器最新入库条目
|
获取媒体服务器最新入库条目
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Jellyfin = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_latest(num=count, username=username)
|
return server.get_latest(num=count, username=username)
|
||||||
|
|||||||
@@ -4,20 +4,19 @@ from app import schemas
|
|||||||
from app.core.context import MediaInfo
|
from app.core.context import MediaInfo
|
||||||
from app.helper.mediaserver import MediaServerHelper
|
from app.helper.mediaserver import MediaServerHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase, _MediaServerBase
|
||||||
from app.modules.plex.plex import Plex
|
from app.modules.plex.plex import Plex
|
||||||
from app.schemas.types import MediaType
|
from app.schemas.types import MediaType
|
||||||
|
|
||||||
|
|
||||||
class PlexModule(_ModuleBase):
|
class PlexModule(_ModuleBase, _MediaServerBase):
|
||||||
_servers: Dict[str, Plex] = {}
|
|
||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
"""
|
"""
|
||||||
初始化模块
|
初始化模块
|
||||||
"""
|
"""
|
||||||
# 读取媒体服务器配置
|
# 读取媒体服务器配置
|
||||||
self._servers = {}
|
self._servers: Dict[str, Plex] = {}
|
||||||
mediaservers = MediaServerHelper().get_mediaservers()
|
mediaservers = MediaServerHelper().get_mediaservers()
|
||||||
if not mediaservers:
|
if not mediaservers:
|
||||||
return
|
return
|
||||||
@@ -29,12 +28,6 @@ class PlexModule(_ModuleBase):
|
|||||||
def get_name() -> str:
|
def get_name() -> str:
|
||||||
return "Plex"
|
return "Plex"
|
||||||
|
|
||||||
def get_server(self, name: str) -> Optional[Plex]:
|
|
||||||
"""
|
|
||||||
获取Plex服务器
|
|
||||||
"""
|
|
||||||
return self._servers.get(name)
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -74,7 +67,7 @@ class PlexModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
source = args.get("source")
|
source = args.get("source")
|
||||||
if source:
|
if source:
|
||||||
server = self.get_server(source)
|
server: Plex = self.get_server(source)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.get_webhook_message(body)
|
return server.get_webhook_message(body)
|
||||||
@@ -140,10 +133,10 @@ class PlexModule(_ModuleBase):
|
|||||||
媒体数量统计
|
媒体数量统计
|
||||||
"""
|
"""
|
||||||
if server:
|
if server:
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
servers = [server_obj]
|
servers = [server]
|
||||||
else:
|
else:
|
||||||
servers = self._servers.values()
|
servers = self._servers.values()
|
||||||
media_statistics = []
|
media_statistics = []
|
||||||
@@ -158,27 +151,27 @@ class PlexModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
媒体库列表
|
媒体库列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_librarys()
|
return server.get_librarys()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
def mediaserver_items(self, server: str, library_id: str) -> Optional[Generator]:
|
||||||
"""
|
"""
|
||||||
媒体库项目列表
|
媒体库项目列表
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_items(library_id)
|
return server.get_items(library_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
def mediaserver_iteminfo(self, server: str, item_id: str) -> Optional[schemas.MediaServerItem]:
|
||||||
"""
|
"""
|
||||||
媒体库项目详情
|
媒体库项目详情
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if server_obj:
|
if server:
|
||||||
return server_obj.get_iteminfo(item_id)
|
return server.get_iteminfo(item_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def mediaserver_tv_episodes(self, server: str,
|
def mediaserver_tv_episodes(self, server: str,
|
||||||
@@ -186,10 +179,10 @@ class PlexModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取剧集信息
|
获取剧集信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
_, seasoninfo = server_obj.get_tv_episodes(item_id=item_id)
|
_, seasoninfo = server.get_tv_episodes(item_id=item_id)
|
||||||
if not seasoninfo:
|
if not seasoninfo:
|
||||||
return []
|
return []
|
||||||
return [schemas.MediaServerSeasonInfo(
|
return [schemas.MediaServerSeasonInfo(
|
||||||
@@ -201,25 +194,25 @@ class PlexModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取媒体服务器正在播放信息
|
获取媒体服务器正在播放信息
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_resume(num=count)
|
return server.get_resume(num=count)
|
||||||
|
|
||||||
def mediaserver_latest(self, server: str, count: int = 20, **kwargs) -> List[schemas.MediaServerPlayItem]:
|
def mediaserver_latest(self, server: str, count: int = 20, **kwargs) -> List[schemas.MediaServerPlayItem]:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器最新入库条目
|
获取媒体服务器最新入库条目
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return []
|
return []
|
||||||
return server_obj.get_latest(num=count)
|
return server.get_latest(num=count)
|
||||||
|
|
||||||
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
def mediaserver_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
获取媒体库播放地址
|
获取媒体库播放地址
|
||||||
"""
|
"""
|
||||||
server_obj = self.get_server(server)
|
server: Plex = self.get_server(server)
|
||||||
if not server_obj:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server_obj.get_play_url(item_id)
|
return server.get_play_url(item_id)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from app.core.config import settings
|
|||||||
from app.core.metainfo import MetaInfo
|
from app.core.metainfo import MetaInfo
|
||||||
from app.helper.downloader import DownloaderHelper
|
from app.helper.downloader import DownloaderHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase, _DownloaderBase
|
||||||
from app.modules.qbittorrent.qbittorrent import Qbittorrent
|
from app.modules.qbittorrent.qbittorrent import Qbittorrent
|
||||||
from app.schemas import TransferTorrent, DownloadingTorrent
|
from app.schemas import TransferTorrent, DownloadingTorrent
|
||||||
from app.schemas.types import TorrentStatus
|
from app.schemas.types import TorrentStatus
|
||||||
@@ -18,17 +18,14 @@ from app.utils.string import StringUtils
|
|||||||
from app.utils.system import SystemUtils
|
from app.utils.system import SystemUtils
|
||||||
|
|
||||||
|
|
||||||
class QbittorrentModule(_ModuleBase):
|
class QbittorrentModule(_ModuleBase, _DownloaderBase):
|
||||||
_servers: Dict[str, Qbittorrent] = {}
|
|
||||||
_default_server: Qbittorrent = None
|
|
||||||
_default_server_name: str = None
|
|
||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
"""
|
"""
|
||||||
初始化模块
|
初始化模块
|
||||||
"""
|
"""
|
||||||
# 读取下载器配置
|
# 读取下载器配置
|
||||||
self._servers = {}
|
self._servers: Dict[str, Qbittorrent] = {}
|
||||||
downloaders = DownloaderHelper().get_downloaders()
|
downloaders = DownloaderHelper().get_downloaders()
|
||||||
if not downloaders:
|
if not downloaders:
|
||||||
return
|
return
|
||||||
@@ -43,14 +40,6 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
def get_name() -> str:
|
def get_name() -> str:
|
||||||
return "Qbittorrent"
|
return "Qbittorrent"
|
||||||
|
|
||||||
def get_server(self, name: str = None) -> Optional[Qbittorrent]:
|
|
||||||
"""
|
|
||||||
获取服务器,name为空则返回默认服务器
|
|
||||||
"""
|
|
||||||
if name:
|
|
||||||
return self._servers.get(name)
|
|
||||||
return self._default_server
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -112,7 +101,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
return None, None, f"种子文件不存在:{content}"
|
return None, None, f"种子文件不存在:{content}"
|
||||||
|
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -210,7 +199,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
:return: 下载器中符合状态的种子列表
|
:return: 下载器中符合状态的种子列表
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -282,7 +271,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
:param path: 源目录
|
:param path: 源目录
|
||||||
:param downloader: 下载器
|
:param downloader: 下载器
|
||||||
"""
|
"""
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
server.set_torrents_tag(ids=hashs, tags=['已整理'])
|
server.set_torrents_tag(ids=hashs, tags=['已整理'])
|
||||||
@@ -306,7 +295,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
:param downloader: 下载器
|
:param downloader: 下载器
|
||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
||||||
@@ -319,7 +308,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
:param downloader: 下载器
|
:param downloader: 下载器
|
||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.start_torrents(ids=hashs)
|
return server.start_torrents(ids=hashs)
|
||||||
@@ -331,7 +320,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
:param downloader: 下载器
|
:param downloader: 下载器
|
||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.stop_torrents(ids=hashs)
|
return server.stop_torrents(ids=hashs)
|
||||||
@@ -340,7 +329,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
获取种子文件列表
|
获取种子文件列表
|
||||||
"""
|
"""
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.get_files(tid=tid)
|
return server.get_files(tid=tid)
|
||||||
@@ -350,7 +339,7 @@ class QbittorrentModule(_ModuleBase):
|
|||||||
下载器信息
|
下载器信息
|
||||||
"""
|
"""
|
||||||
if downloader:
|
if downloader:
|
||||||
server = self.get_server(downloader)
|
server: Qbittorrent = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
servers = [server]
|
servers = [server]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from app.core.config import settings
|
|||||||
from app.core.metainfo import MetaInfo
|
from app.core.metainfo import MetaInfo
|
||||||
from app.helper.downloader import DownloaderHelper
|
from app.helper.downloader import DownloaderHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase, _DownloaderBase
|
||||||
from app.modules.transmission.transmission import Transmission
|
from app.modules.transmission.transmission import Transmission
|
||||||
from app.schemas import TransferTorrent, DownloadingTorrent
|
from app.schemas import TransferTorrent, DownloadingTorrent
|
||||||
from app.schemas.types import TorrentStatus
|
from app.schemas.types import TorrentStatus
|
||||||
@@ -18,14 +18,11 @@ from app.utils.string import StringUtils
|
|||||||
from app.utils.system import SystemUtils
|
from app.utils.system import SystemUtils
|
||||||
|
|
||||||
|
|
||||||
class TransmissionModule(_ModuleBase):
|
class TransmissionModule(_ModuleBase, _DownloaderBase):
|
||||||
_servers: Dict[str, Transmission] = {}
|
|
||||||
_default_server: Transmission = None
|
|
||||||
_default_server_name: str = None
|
|
||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
# 读取下载器配置
|
# 读取下载器配置
|
||||||
self._servers = {}
|
self._servers: Dict[str, Transmission] = {}
|
||||||
downloaders = DownloaderHelper().get_downloaders()
|
downloaders = DownloaderHelper().get_downloaders()
|
||||||
if not downloaders:
|
if not downloaders:
|
||||||
return
|
return
|
||||||
@@ -39,14 +36,6 @@ class TransmissionModule(_ModuleBase):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_name() -> str:
|
def get_name() -> str:
|
||||||
return "Transmission"
|
return "Transmission"
|
||||||
|
|
||||||
def get_server(self, name: str = None) -> Optional[Transmission]:
|
|
||||||
"""
|
|
||||||
获取服务器,name为空则返回默认服务器
|
|
||||||
"""
|
|
||||||
if name:
|
|
||||||
return self._servers.get(name)
|
|
||||||
return self._default_server
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
pass
|
pass
|
||||||
@@ -111,7 +100,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
return None, None, f"种子文件不存在:{content}"
|
return None, None, f"种子文件不存在:{content}"
|
||||||
|
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -202,7 +191,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
:return: 下载器中符合状态的种子列表
|
:return: 下载器中符合状态的种子列表
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
ret_torrents = []
|
ret_torrents = []
|
||||||
@@ -270,7 +259,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
# 获取原标签
|
# 获取原标签
|
||||||
@@ -302,7 +291,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
||||||
@@ -316,7 +305,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.start_torrents(ids=hashs)
|
return server.start_torrents(ids=hashs)
|
||||||
@@ -330,7 +319,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.start_torrents(ids=hashs)
|
return server.start_torrents(ids=hashs)
|
||||||
@@ -340,7 +329,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
获取种子文件列表
|
获取种子文件列表
|
||||||
"""
|
"""
|
||||||
# 获取下载器
|
# 获取下载器
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
return server.get_files(tid=tid)
|
return server.get_files(tid=tid)
|
||||||
@@ -350,7 +339,7 @@ class TransmissionModule(_ModuleBase):
|
|||||||
下载器信息
|
下载器信息
|
||||||
"""
|
"""
|
||||||
if downloader:
|
if downloader:
|
||||||
server = self.get_server(downloader)
|
server: Transmission = self.get_server(downloader)
|
||||||
if not server:
|
if not server:
|
||||||
return None
|
return None
|
||||||
servers = [server]
|
servers = [server]
|
||||||
|
|||||||
Reference in New Issue
Block a user