mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
Merge pull request #3323 from Aqr-K/feat-module
This commit is contained in:
+16
-2
@@ -1,11 +1,12 @@
|
|||||||
import traceback
|
import traceback
|
||||||
from typing import Generator, Optional, Tuple, Any
|
from typing import Generator, Optional, Tuple, Any, Union
|
||||||
|
|
||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.core.event import eventmanager
|
from app.core.event import eventmanager
|
||||||
from app.helper.module import ModuleHelper
|
from app.helper.module import ModuleHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.schemas.types import EventType, ModuleType
|
from app.schemas.types import EventType, ModuleType, DownloaderType, MediaServerType, MessageChannel, StorageSchema, \
|
||||||
|
OtherModulesType
|
||||||
from app.utils.object import ObjectUtils
|
from app.utils.object import ObjectUtils
|
||||||
from app.utils.singleton import Singleton
|
from app.utils.singleton import Singleton
|
||||||
|
|
||||||
@@ -19,6 +20,8 @@ class ModuleManager(metaclass=Singleton):
|
|||||||
_modules: dict = {}
|
_modules: dict = {}
|
||||||
# 运行态模块列表
|
# 运行态模块列表
|
||||||
_running_modules: dict = {}
|
_running_modules: dict = {}
|
||||||
|
# 子模块类型集合
|
||||||
|
SubType = Union[DownloaderType, MediaServerType, MessageChannel, StorageSchema, OtherModulesType]
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.load_modules()
|
self.load_modules()
|
||||||
@@ -135,6 +138,17 @@ class ModuleManager(metaclass=Singleton):
|
|||||||
and module.get_type() == module_type:
|
and module.get_type() == module_type:
|
||||||
yield module
|
yield module
|
||||||
|
|
||||||
|
def get_running_subtype_module(self, module_subtype: SubType) -> Generator:
|
||||||
|
"""
|
||||||
|
获取指定子类型的模块
|
||||||
|
"""
|
||||||
|
if not self._running_modules:
|
||||||
|
return []
|
||||||
|
for _, module in self._running_modules.items():
|
||||||
|
if hasattr(module, 'get_subtype') \
|
||||||
|
and module.get_subtype() == module_subtype:
|
||||||
|
yield module
|
||||||
|
|
||||||
def get_module(self, module_id: str) -> Any:
|
def get_module(self, module_id: str) -> Any:
|
||||||
"""
|
"""
|
||||||
根据模块id获取模块
|
根据模块id获取模块
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ from app.modules.indexer.spider.tnode import TNodeSpider
|
|||||||
from app.modules.indexer.spider.torrentleech import TorrentLeech
|
from app.modules.indexer.spider.torrentleech import TorrentLeech
|
||||||
from app.modules.indexer.spider.yema import YemaSpider
|
from app.modules.indexer.spider.yema import YemaSpider
|
||||||
from app.schemas import SiteUserData
|
from app.schemas import SiteUserData
|
||||||
from app.schemas.types import MediaType, ModuleType
|
from app.schemas.types import MediaType, ModuleType, OtherModulesType
|
||||||
from app.utils.string import StringUtils
|
from app.utils.string import StringUtils
|
||||||
|
|
||||||
|
|
||||||
@@ -47,6 +47,13 @@ class IndexerModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
return ModuleType.Indexer
|
return ModuleType.Indexer
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_subtype() -> OtherModulesType:
|
||||||
|
"""
|
||||||
|
获取模块子类型
|
||||||
|
"""
|
||||||
|
return OtherModulesType.Indexer
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_priority() -> int:
|
def get_priority() -> int:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -220,6 +220,8 @@ class OtherModulesType(Enum):
|
|||||||
FileManager = "文件整理"
|
FileManager = "文件整理"
|
||||||
# 过滤器
|
# 过滤器
|
||||||
Filter = "过滤器"
|
Filter = "过滤器"
|
||||||
|
# 站点索引
|
||||||
|
Indexer = "站点索引"
|
||||||
|
|
||||||
|
|
||||||
# 用户配置Key字典
|
# 用户配置Key字典
|
||||||
|
|||||||
Reference in New Issue
Block a user