This commit is contained in:
jxxghp 2023-11-12 18:51:08 +08:00
parent ae9bab2981
commit d47639bada

View File

@ -30,12 +30,11 @@ class PluginManager(metaclass=Singleton):
def __init__(self): def __init__(self):
self.siteshelper = SitesHelper() self.siteshelper = SitesHelper()
self.pluginhelper = PluginHelper() self.pluginhelper = PluginHelper()
self.update_online_plugin() self.systemconfig = SystemConfigOper()
self.install_online_plugin()
self.init_config() self.init_config()
def init_config(self): def init_config(self):
# 配置管理
self.systemconfig = SystemConfigOper()
# 停止已有插件 # 停止已有插件
self.stop() self.stop()
# 启动插件 # 启动插件
@ -103,35 +102,32 @@ class PluginManager(metaclass=Singleton):
self._plugins = {} self._plugins = {}
self._running_plugins = {} self._running_plugins = {}
@staticmethod def install_online_plugin(self):
def update_online_plugin():
""" """
更新三方插件 安装本地不存在的在线插件
""" """
logger.info("开始安装在线插件...")
# 已安装插件 # 已安装插件
install_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] install_plugins = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
# 在线插件 # 在线插件
online_plugins = PluginManager().get_online_plugins() online_plugins = self.get_online_plugins()
if not online_plugins: if not online_plugins:
logger.error("未获取到在线插件,停止运行") logger.error("未获取到在线插件")
return return
# 支持更新的插件自动更新 # 支持更新的插件自动更新
for plugin in online_plugins: for plugin in online_plugins:
# 只处理已安装的插件 # 只处理已安装的插件
if str(plugin.get("id")) in install_plugins: if plugin.get("id") in install_plugins and not plugin.get("installed"):
# 有更新 或者 重置后本地未安装的 # 下载安装
if plugin.get("has_update") or not plugin.get("installed"): state, msg = self.pluginhelper.install(pid=plugin.get("id"),
# 下载安装 fi repo_url=plugin.get("repo_url"))
state, msg = PluginHelper().install(pid=plugin.get("id"), # 安装失败
repo_url=plugin.get("repo_url")) if not state:
# 安装失败 logger.error(
if not state: f"插件 {plugin.get('plugin_name')} v{plugin.get('plugin_version')} 安装失败:{msg}")
logger.error( continue
f"插件 {plugin.get('plugin_name')} 更新失败,最新版本 {plugin.get('plugin_version')}") logger.info(f"插件 {plugin.get('plugin_name')} 安装成功,版本:{plugin.get('plugin_version')}")
continue logger.info("在线插件安装完成")
logger.info(f"插件 {plugin.get('plugin_name')} 更新成功,最新版本 {plugin.get('plugin_version')}")
def get_plugin_config(self, pid: str) -> dict: def get_plugin_config(self, pid: str) -> dict:
""" """