feat PluginUnInstall v1.1

可选删除插件配置及数据
This commit is contained in:
thsrite
2024-10-24 13:22:50 +08:00
parent e0931123de
commit 3318efc4ff
3 changed files with 54 additions and 5 deletions

View File

@@ -41,7 +41,7 @@ MoviePilot三方插件市场https://github.com/thsrite/MoviePilot-Plugins/
35. 订阅下载统计 v1.6 `统计指定时间内各站点订阅及下载情况。`
36. [自定义命令 v1.7](docs%2FCustomCommand.md) `自定义执行周期执行命令并推送结果。`
37. docker自定义任务 v1.3 `管理宿主机docker自定义容器定时任务。`
38. 插件彻底卸载 v1.0 `删除数据库中已安装插件记录、清理插件文件。`
38. 插件彻底卸载 v1.1 `删除数据库中已安装插件记录、清理插件文件。`
39. 实时软连接 v2.0.1 `监控目录文件变化,媒体文件软连接,其他文件可选复制。`
40. 订阅规则自动填充 v2.7 `电视剧下载后自动添加官组等信息到订阅;添加订阅后根据二级分类名称自定义订阅规则。`
41. Emby元数据刷新 v1.7.3 `定时刷新Emby媒体库元数据演职人员中文。`

View File

@@ -403,12 +403,13 @@
"name": "插件彻底卸载",
"description": "删除数据库中已安装插件记录、清理插件文件。",
"labels": "插件管理",
"version": "1.0",
"version": "1.1",
"icon": "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/uninstall.png",
"author": "thsrite",
"level": 1,
"v2": true,
"history": {
"v1.1": "可选删除插件配置及数据",
"v1.0": "init"
}
},

View File

@@ -2,6 +2,7 @@ import shutil
from pathlib import Path
from app.core.config import settings
from app.core.plugin import PluginManager
from app.db.systemconfig_oper import SystemConfigOper
from app.helper.plugin import PluginHelper
from app.plugins import _PluginBase
@@ -19,7 +20,7 @@ class PluginUnInstall(_PluginBase):
# 插件图标
plugin_icon = "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/uninstall.png"
# 插件版本
plugin_version = "1.0"
plugin_version = "1.1"
# 插件作者
plugin_author = "thsrite"
# 作者主页
@@ -33,10 +34,14 @@ class PluginUnInstall(_PluginBase):
# 私有属性
_plugin_ids = []
_clear_config = False
_clear_data = False
def init_plugin(self, config: dict = None):
if config:
self._plugin_ids = config.get("plugin_ids") or []
self._clear_config = config.get("clear_config")
self._clear_data = config.get("clear_data")
if not self._plugin_ids:
return
@@ -50,6 +55,12 @@ class PluginUnInstall(_PluginBase):
plugin_dir = Path(settings.ROOT_PATH) / "app" / "plugins" / install_plugin.lower()
if plugin_dir.exists():
shutil.rmtree(plugin_dir, ignore_errors=True)
if self._clear_config:
# 删除配置
PluginManager().delete_plugin_config(install_plugin)
if self._clear_data:
# 删除插件所有数据
PluginManager().delete_plugin_data(install_plugin)
logger.info(f"插件 {install_plugin} 已卸载")
else:
new_install_plugins.append(install_plugin)
@@ -58,7 +69,9 @@ class PluginUnInstall(_PluginBase):
SystemConfigOper().set(SystemConfigKey.UserInstalledPlugins, new_install_plugins)
self.update_config({
"plugin_ids": ""
"plugin_ids": "",
"clear_config": self._clear_config,
"clear_data": self._clear_data
})
def get_state(self) -> bool:
@@ -97,6 +110,39 @@ class PluginUnInstall(_PluginBase):
'component': 'VCol',
'props': {
'cols': 12,
'md': 3
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'clear_config',
'label': '清除配置',
}
}
]
},
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 3
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'clear_data',
'label': '清除数据',
}
}
]
},
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 6
},
'content': [
{
@@ -137,7 +183,9 @@ class PluginUnInstall(_PluginBase):
]
}
], {
"plugin_ids": []
"plugin_ids": [],
"clear_config": False,
"clear_data": False
}
@staticmethod