From 2116b094adaf591cd5cbabf59320f835c1fe32f5 Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 11 Nov 2023 23:40:39 -0600 Subject: [PATCH] =?UTF-8?q?fix=20=E4=B8=89=E6=96=B9=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/plugin.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/app/core/plugin.py b/app/core/plugin.py index 6e508e09..24fe2bdb 100644 --- a/app/core/plugin.py +++ b/app/core/plugin.py @@ -30,6 +30,7 @@ class PluginManager(metaclass=Singleton): def __init__(self): self.siteshelper = SitesHelper() self.pluginhelper = PluginHelper() + self.update_online_plugin() self.init_config() def init_config(self): @@ -102,6 +103,36 @@ class PluginManager(metaclass=Singleton): self._plugins = {} self._running_plugins = {} + @staticmethod + def update_online_plugin(): + """ + 更新三方插件 + """ + # 已安装插件 + install_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] + # 在线插件 + online_plugins = PluginManager().get_online_plugins() + if not online_plugins: + logger.error("未获取到在线插件,停止运行") + return + + # 支持更新的插件自动更新 + for plugin in online_plugins: + # 只处理已安装的插件 + if str(plugin.get("id")) in install_plugins: + # 有更新 或者 重置后本地未安装的 + if plugin.get("has_update") or not plugin.get("installed"): + # 下载安装 + state, msg = PluginHelper().install(pid=plugin.get("id"), + repo_url=plugin.get("repo_url")) + # 安装失败 + if not state: + logger.error( + f"插件 {plugin.get('plugin_name')} 更新失败,最新版本 {plugin.get('plugin_version')}") + continue + + logger.info(f"插件 {plugin.get('plugin_name')} 更新成功,最新版本 {plugin.get('plugin_version')}") + def get_plugin_config(self, pid: str) -> dict: """ 获取插件配置