From b037cae0f489f2b7c13d7e674cae97e4155279ce Mon Sep 17 00:00:00 2001 From: thsrite Date: Tue, 14 May 2024 14:23:58 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=8F=92=E4=BB=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- package.json | 3 +- plugins/pluginautoupdate/__init__.py | 49 ++++++++++++++++++++++++---- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d704f5a..fdad463 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ MoviePilot三方插件市场:https://github.com/thsrite/MoviePilot-Plugins/ - 清理订阅缓存 1.0 - 添加种子下载 1.0 - 删除站点种子 1.2 -- 插件更新管理 1.7 +- 插件更新管理 1.8 - 插件强制重装 1.7 - 群辉Webhook通知 1.1 - 同步CookieCloud 1.2 diff --git a/package.json b/package.json index 33d7026..acf36e9 100644 --- a/package.json +++ b/package.json @@ -90,11 +90,12 @@ "name": "插件更新管理", "description": "监测已安装插件,推送更新提醒,可配置自动更新。", "labels": "自动更新,插件管理", - "version": "1.7", + "version": "1.8", "icon": "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/pluginupdate.png", "author": "thsrite", "level": 1, "history": { + "v1.8": "修复已安装插件列表", "v1.7": "插件API立即生效", "v1.6": "插件重载,插件自动更新注册成为服务、命令", "v1.5": "自动更新增加排除列表", diff --git a/plugins/pluginautoupdate/__init__.py b/plugins/pluginautoupdate/__init__.py index 01b94d2..533ff95 100644 --- a/plugins/pluginautoupdate/__init__.py +++ b/plugins/pluginautoupdate/__init__.py @@ -17,6 +17,7 @@ from app.schemas import NotificationType from app.scheduler import Scheduler from app.schemas.types import EventType from app.core.event import eventmanager, Event +from app.utils.string import StringUtils router = APIRouter() @@ -29,7 +30,7 @@ class PluginAutoUpdate(_PluginBase): # 插件图标 plugin_icon = "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/pluginupdate.png" # 插件版本 - plugin_version = "1.7" + plugin_version = "1.8" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -273,6 +274,40 @@ class PluginAutoUpdate(_PluginBase): break router.add_api_route(**api) + @staticmethod + def get_local_plugins(): + """ + 获取本地插件 + """ + # 已安装插件 + install_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] + + local_plugins = {} + # 线上插件列表 + markets = settings.PLUGIN_MARKET.split(",") + for market in markets: + online_plugins = PluginHelper().get_plugins(market) or {} + for pid, plugin in online_plugins.items(): + if pid in install_plugins: + local_plugin = local_plugins.get(pid) + if local_plugin: + if StringUtils.compare_version(local_plugin.get("plugin_version"), plugin.get("version")) < 0: + local_plugins[pid] = { + "id": pid, + "plugin_name": plugin.get("name"), + "repo_url": market, + "plugin_version": plugin.get("version") + } + else: + local_plugins[pid] = { + "id": pid, + "plugin_name": plugin.get("name"), + "repo_url": market, + "plugin_version": plugin.get("version") + } + + return local_plugins + def get_form(self) -> Tuple[List[dict], Dict[str, Any]]: """ 拼装插件配置页面,需要返回两块数据:1、页面配置;2、数据结构 @@ -285,14 +320,16 @@ class PluginAutoUpdate(_PluginBase): "value": item.name }) + # 已安装插件 + local_plugins = self.get_local_plugins() # 编历 local_plugins,生成插件类型选项 pluginOptions = [] - # 本地插件 - local_plugins = PluginManager().get_local_plugins() - for plugin in local_plugins: + + for plugin_id in list(local_plugins.keys()): + local_plugin = local_plugins.get(plugin_id) pluginOptions.append({ - "title": f"{plugin.plugin_name} v{plugin.plugin_version}", - "value": plugin.id + "title": f"{local_plugin.get('plugin_name')} v{local_plugin.get('plugin_version')}", + "value": local_plugin.get("id") }) return [ {