From 79a57b057637a72d9c718858737bfbbff689a265 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 3 Aug 2023 17:58:00 +0800 Subject: [PATCH] fix plugin state --- app/core/plugin.py | 3 +++ app/plugins/__init__.py | 7 +++++++ app/plugins/autosignin/__init__.py | 3 +++ app/plugins/chinesesubfinder/__init__.py | 3 +++ app/plugins/customhosts/__init__.py | 3 +++ app/plugins/dirmonitor/__init__.py | 7 +++++-- app/plugins/doubanrank/__init__.py | 3 +++ app/plugins/doubansync/__init__.py | 3 +++ app/plugins/libraryscraper/__init__.py | 9 ++++++--- app/plugins/sitestatistic/__init__.py | 3 +++ app/plugins/speedlimiter/__init__.py | 9 ++++++--- app/plugins/torrentremover/__init__.py | 9 ++++++--- 12 files changed, 51 insertions(+), 11 deletions(-) diff --git a/app/core/plugin.py b/app/core/plugin.py index ad1602a3..05898d36 100644 --- a/app/core/plugin.py +++ b/app/core/plugin.py @@ -185,6 +185,9 @@ class PluginManager(metaclass=Singleton): conf.update({"installed": True}) else: conf.update({"installed": False}) + # 运行状态 + if hasattr(plugin, "get_state"): + conf.update({"state": plugin.get_state()}) # 名称 if hasattr(plugin, "plugin_name"): conf.update({"plugin_name": plugin.plugin_name}) diff --git a/app/plugins/__init__.py b/app/plugins/__init__.py index da46dffe..e6ad9391 100644 --- a/app/plugins/__init__.py +++ b/app/plugins/__init__.py @@ -95,6 +95,13 @@ class _PluginBase(metaclass=ABCMeta): """ pass + @abstractmethod + def get_state(self) -> bool: + """ + 获取插件运行状态 + """ + pass + @abstractmethod def stop_service(self): """ diff --git a/app/plugins/autosignin/__init__.py b/app/plugins/autosignin/__init__.py index 1e397a63..c125fc53 100644 --- a/app/plugins/autosignin/__init__.py +++ b/app/plugins/autosignin/__init__.py @@ -113,6 +113,9 @@ class AutoSignIn(_PluginBase): self._scheduler.print_jobs() self._scheduler.start() + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: """ diff --git a/app/plugins/chinesesubfinder/__init__.py b/app/plugins/chinesesubfinder/__init__.py index c183a299..e6dde844 100644 --- a/app/plugins/chinesesubfinder/__init__.py +++ b/app/plugins/chinesesubfinder/__init__.py @@ -173,6 +173,9 @@ class ChineseSubFinder(_PluginBase): "remote_path": "" } + def get_state(self) -> bool: + return self._enabled + def get_page(self) -> List[dict]: pass diff --git a/app/plugins/customhosts/__init__.py b/app/plugins/customhosts/__init__.py index 68edc029..807c3eb4 100644 --- a/app/plugins/customhosts/__init__.py +++ b/app/plugins/customhosts/__init__.py @@ -60,6 +60,9 @@ class CustomHosts(_PluginBase): "enable": self._enabled }) + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: pass diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 873bc1cf..a0a91861 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -27,18 +27,21 @@ class DirMonitor(_PluginBase): # 私有属性 _monitor = None - _enable = False + _enabled = False def init_plugin(self, config: dict = None): # 读取配置 if config: - self._enable = config.get("enable") + self._enabled = config.get("enabled") # 停止现有任务 self.stop_service() # TODO 启动任务 + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: pass diff --git a/app/plugins/doubanrank/__init__.py b/app/plugins/doubanrank/__init__.py index 31f9d201..275c2d9f 100644 --- a/app/plugins/doubanrank/__init__.py +++ b/app/plugins/doubanrank/__init__.py @@ -102,6 +102,9 @@ class DoubanRank(_PluginBase): self._scheduler.print_jobs() self._scheduler.start() + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: pass diff --git a/app/plugins/doubansync/__init__.py b/app/plugins/doubansync/__init__.py index b419920d..46367347 100644 --- a/app/plugins/doubansync/__init__.py +++ b/app/plugins/doubansync/__init__.py @@ -97,6 +97,9 @@ class DoubanSync(_PluginBase): self._scheduler.print_jobs() self._scheduler.start() + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: """ diff --git a/app/plugins/libraryscraper/__init__.py b/app/plugins/libraryscraper/__init__.py index bfc8d971..4e4f2868 100644 --- a/app/plugins/libraryscraper/__init__.py +++ b/app/plugins/libraryscraper/__init__.py @@ -36,7 +36,7 @@ class LibraryScraper(_PluginBase): _scheduler = None _scraper = None # 限速开关 - _enable = False + _enabled = False _cron = None _mode = None _scraper_path = None @@ -47,7 +47,7 @@ class LibraryScraper(_PluginBase): def init_plugin(self, config: dict = None): # 读取配置 if config: - self._enable = config.get("enable") + self._enabled = config.get("enabled") self._cron = config.get("cron") self._mode = config.get("mode") self._scraper_path = config.get("scraper_path") @@ -57,7 +57,7 @@ class LibraryScraper(_PluginBase): self.stop_service() # 启动定时任务 & 立即运行一次 - if self._enable: + if self._enabled: self._scheduler = BackgroundScheduler(timezone=settings.TZ) if self._cron: logger.info(f"媒体库刮削服务启动,周期:{self._cron}") @@ -68,6 +68,9 @@ class LibraryScraper(_PluginBase): self._scheduler.print_jobs() self._scheduler.start() + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: pass diff --git a/app/plugins/sitestatistic/__init__.py b/app/plugins/sitestatistic/__init__.py index 17295ed9..3fd19cdd 100644 --- a/app/plugins/sitestatistic/__init__.py +++ b/app/plugins/sitestatistic/__init__.py @@ -114,6 +114,9 @@ class SiteStatistic(_PluginBase): self._scheduler.print_jobs() self._scheduler.start() + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: """ diff --git a/app/plugins/speedlimiter/__init__.py b/app/plugins/speedlimiter/__init__.py index d9a9f09a..e4cfdb01 100644 --- a/app/plugins/speedlimiter/__init__.py +++ b/app/plugins/speedlimiter/__init__.py @@ -31,7 +31,7 @@ class SpeedLimiter(_PluginBase): # 私有属性 _scheduler = None - _enable: bool = False + _enabled: bool = False _notify: bool = False _bandwidth: int = 0 _interval: int = 60 @@ -39,7 +39,7 @@ class SpeedLimiter(_PluginBase): def init_plugin(self, config: dict = None): # 读取配置 if config: - self._enable = config.get("enable") + self._enabled = config.get("enabled") self._notify = config.get("notify") try: # 总带宽 @@ -52,7 +52,7 @@ class SpeedLimiter(_PluginBase): self.stop_service() # 启动限速任务 - if self._enable: + if self._enabled: self._scheduler = BackgroundScheduler(timezone=settings.TZ) self._scheduler.add_job(func=self.__check_playing_sessions, trigger='interval', @@ -61,6 +61,9 @@ class SpeedLimiter(_PluginBase): self._scheduler.start() logger.info("播放限速服务启动") + def get_state(self) -> bool: + return self._enabled + @staticmethod def get_command() -> List[Dict[str, Any]]: pass diff --git a/app/plugins/torrentremover/__init__.py b/app/plugins/torrentremover/__init__.py index b82834b4..7358176f 100644 --- a/app/plugins/torrentremover/__init__.py +++ b/app/plugins/torrentremover/__init__.py @@ -29,11 +29,14 @@ class TorrentRemover(_PluginBase): # 私有属性 downloader = None - _enable = False + _enabled = False def init_plugin(self, config: dict = None): if config: - self._enable = config.get("enable") + self._enabled = config.get("enabled") + + def get_state(self) -> bool: + return self._enabled @staticmethod def get_command() -> List[Dict[str, Any]]: @@ -56,7 +59,7 @@ class TorrentRemover(_PluginBase): """ 联动删除下载器中的下载任务 """ - if not self._enable: + if not self._enabled: return event_info = event.event_data if not event_info: