diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 5c416c8c..c3f3f84f 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -280,9 +280,12 @@ def modulelist(_: schemas.TokenPayload = Depends(verify_token)): """ 查询已加载的模块ID列表 """ - module_ids = [module.__name__ for module in ModuleManager().get_modules("test")] + modules = [{ + "id": k, + "name": v.get_name(), + } for k, v in ModuleManager().get_modules().items()] return schemas.Response(success=True, data={ - "ids": module_ids + "modules": modules }) diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 6e71765e..63360408 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -92,7 +92,7 @@ class ChainBase(metaclass=ABCMeta): logger.debug(f"请求模块执行:{method} ...") result = None - modules = self.modulemanager.get_modules(method) + modules = self.modulemanager.get_running_modules(method) for module in modules: try: func = getattr(module, method) diff --git a/app/core/module.py b/app/core/module.py index 1664eb9e..01df398f 100644 --- a/app/core/module.py +++ b/app/core/module.py @@ -95,7 +95,7 @@ class ModuleManager(metaclass=Singleton): return True return False - def get_modules(self, method: str) -> Generator: + def get_running_modules(self, method: str) -> Generator: """ 获取实现了同一方法的模块列表 """ @@ -105,3 +105,9 @@ class ModuleManager(metaclass=Singleton): if hasattr(module, method) \ and ObjectUtils.check_method(getattr(module, method)): yield module + + def get_modules(self) -> dict: + """ + 获取模块列表 + """ + return self._modules diff --git a/app/modules/__init__.py b/app/modules/__init__.py index 98dbc526..2863b21b 100644 --- a/app/modules/__init__.py +++ b/app/modules/__init__.py @@ -27,6 +27,14 @@ class _ModuleBase(metaclass=ABCMeta): """ pass + @staticmethod + @abstractmethod + def get_name() -> str: + """ + 获取模块名称 + """ + pass + @abstractmethod def stop(self) -> None: """ diff --git a/app/modules/bangumi/__init__.py b/app/modules/bangumi/__init__.py index f0e14683..ddd3cd51 100644 --- a/app/modules/bangumi/__init__.py +++ b/app/modules/bangumi/__init__.py @@ -33,6 +33,10 @@ class BangumiModule(_ModuleBase): def init_setting(self) -> Tuple[str, Union[str, bool]]: pass + @staticmethod + def get_name() -> str: + return "Bangumi" + def recognize_media(self, bangumiid: int = None, **kwargs) -> Optional[MediaInfo]: """ diff --git a/app/modules/douban/__init__.py b/app/modules/douban/__init__.py index c31b2eac..f9dd6f32 100644 --- a/app/modules/douban/__init__.py +++ b/app/modules/douban/__init__.py @@ -48,6 +48,10 @@ class DoubanModule(_ModuleBase): def init_setting(self) -> Tuple[str, Union[str, bool]]: pass + @staticmethod + def get_name() -> str: + return "豆瓣" + def recognize_media(self, meta: MetaBase = None, mtype: MediaType = None, doubanid: str = None, diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index f8f94fe5..02aa100b 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -14,6 +14,10 @@ class EmbyModule(_ModuleBase): def init_module(self) -> None: self.emby = Emby() + @staticmethod + def get_name() -> str: + return "Emby" + def stop(self): pass diff --git a/app/modules/fanart/__init__.py b/app/modules/fanart/__init__.py index 28ba766d..6ccb0993 100644 --- a/app/modules/fanart/__init__.py +++ b/app/modules/fanart/__init__.py @@ -331,6 +331,10 @@ class FanartModule(_ModuleBase): def init_setting(self) -> Tuple[str, Union[str, bool]]: return "FANART_API_KEY", True + @staticmethod + def get_name() -> str: + return "Fanart" + def obtain_images(self, mediainfo: MediaInfo) -> Optional[MediaInfo]: """ 获取图片 diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 921cc743..143f9991 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -24,6 +24,10 @@ class FileTransferModule(_ModuleBase): def init_module(self) -> None: pass + @staticmethod + def get_name() -> str: + return "文件整理" + def stop(self): pass diff --git a/app/modules/filter/__init__.py b/app/modules/filter/__init__.py index db3904fa..cbe305c9 100644 --- a/app/modules/filter/__init__.py +++ b/app/modules/filter/__init__.py @@ -136,6 +136,10 @@ class FilterModule(_ModuleBase): def init_module(self) -> None: self.parser = RuleParser() + @staticmethod + def get_name() -> str: + return "过滤器" + def stop(self): pass diff --git a/app/modules/indexer/__init__.py b/app/modules/indexer/__init__.py index b00c4cd4..28f6aa5a 100644 --- a/app/modules/indexer/__init__.py +++ b/app/modules/indexer/__init__.py @@ -25,6 +25,10 @@ class IndexerModule(_ModuleBase): def init_module(self) -> None: pass + @staticmethod + def get_name() -> str: + return "站点索引" + def stop(self): pass diff --git a/app/modules/jellyfin/__init__.py b/app/modules/jellyfin/__init__.py index 05fcc3d4..11cd9c27 100644 --- a/app/modules/jellyfin/__init__.py +++ b/app/modules/jellyfin/__init__.py @@ -14,6 +14,10 @@ class JellyfinModule(_ModuleBase): def init_module(self) -> None: self.jellyfin = Jellyfin() + @staticmethod + def get_name() -> str: + return "Jellyfin" + def init_setting(self) -> Tuple[str, Union[str, bool]]: return "MEDIASERVER", "jellyfin" diff --git a/app/modules/plex/__init__.py b/app/modules/plex/__init__.py index 7cbe5d25..e4b28a2d 100644 --- a/app/modules/plex/__init__.py +++ b/app/modules/plex/__init__.py @@ -14,6 +14,10 @@ class PlexModule(_ModuleBase): def init_module(self) -> None: self.plex = Plex() + @staticmethod + def get_name() -> str: + return "Plex" + def stop(self): pass diff --git a/app/modules/qbittorrent/__init__.py b/app/modules/qbittorrent/__init__.py index 7950f44f..20e04969 100644 --- a/app/modules/qbittorrent/__init__.py +++ b/app/modules/qbittorrent/__init__.py @@ -23,6 +23,10 @@ class QbittorrentModule(_ModuleBase): def init_module(self) -> None: self.qbittorrent = Qbittorrent() + @staticmethod + def get_name() -> str: + return "Qbittorrent" + def stop(self): pass diff --git a/app/modules/slack/__init__.py b/app/modules/slack/__init__.py index 86e47a60..1684c86a 100644 --- a/app/modules/slack/__init__.py +++ b/app/modules/slack/__init__.py @@ -16,6 +16,10 @@ class SlackModule(_ModuleBase): def init_module(self) -> None: self.slack = Slack() + @staticmethod + def get_name() -> str: + return "Slack" + def stop(self): self.slack.stop() diff --git a/app/modules/subtitle/__init__.py b/app/modules/subtitle/__init__.py index 79364c01..8964c07b 100644 --- a/app/modules/subtitle/__init__.py +++ b/app/modules/subtitle/__init__.py @@ -28,6 +28,10 @@ class SubtitleModule(_ModuleBase): def init_module(self) -> None: pass + @staticmethod + def get_name() -> str: + return "站点字幕" + def init_setting(self) -> Tuple[str, Union[str, bool]]: pass diff --git a/app/modules/synologychat/__init__.py b/app/modules/synologychat/__init__.py index b628ed15..141b0e54 100644 --- a/app/modules/synologychat/__init__.py +++ b/app/modules/synologychat/__init__.py @@ -13,6 +13,10 @@ class SynologyChatModule(_ModuleBase): def init_module(self) -> None: self.synologychat = SynologyChat() + @staticmethod + def get_name() -> str: + return "Synology Chat" + def stop(self): pass diff --git a/app/modules/telegram/__init__.py b/app/modules/telegram/__init__.py index 0abad711..b7d2e7a2 100644 --- a/app/modules/telegram/__init__.py +++ b/app/modules/telegram/__init__.py @@ -15,6 +15,10 @@ class TelegramModule(_ModuleBase): def init_module(self) -> None: self.telegram = Telegram() + @staticmethod + def get_name() -> str: + return "Telegram" + def stop(self): self.telegram.stop() diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 2853cf5d..8ce45f80 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -39,6 +39,10 @@ class TheMovieDbModule(_ModuleBase): self.category = CategoryHelper() self.scraper = TmdbScraper(self.tmdb) + @staticmethod + def get_name() -> str: + return "TheMovieDb" + def stop(self): self.cache.save() self.tmdb.close() diff --git a/app/modules/thetvdb/__init__.py b/app/modules/thetvdb/__init__.py index 381f8202..36e22886 100644 --- a/app/modules/thetvdb/__init__.py +++ b/app/modules/thetvdb/__init__.py @@ -16,6 +16,10 @@ class TheTvDbModule(_ModuleBase): select_first=True, proxies=settings.PROXY) + @staticmethod + def get_name() -> str: + return "TheTvDb" + def stop(self): self.tvdb.close() diff --git a/app/modules/transmission/__init__.py b/app/modules/transmission/__init__.py index 09a0b264..91bb3ef7 100644 --- a/app/modules/transmission/__init__.py +++ b/app/modules/transmission/__init__.py @@ -23,6 +23,10 @@ class TransmissionModule(_ModuleBase): def init_module(self) -> None: self.transmission = Transmission() + @staticmethod + def get_name() -> str: + return "Transmission" + def stop(self): pass diff --git a/app/modules/vocechat/__init__.py b/app/modules/vocechat/__init__.py index a3a8a8fa..465ad529 100644 --- a/app/modules/vocechat/__init__.py +++ b/app/modules/vocechat/__init__.py @@ -15,6 +15,10 @@ class VoceChatModule(_ModuleBase): def init_module(self) -> None: self.vocechat = VoceChat() + @staticmethod + def get_name() -> str: + return "VoceChat" + def stop(self): pass diff --git a/app/modules/wechat/__init__.py b/app/modules/wechat/__init__.py index 2f7407a1..5031b003 100644 --- a/app/modules/wechat/__init__.py +++ b/app/modules/wechat/__init__.py @@ -17,6 +17,10 @@ class WechatModule(_ModuleBase): def init_module(self) -> None: self.wechat = WeChat() + @staticmethod + def get_name() -> str: + return "微信" + def stop(self): pass