mirror of
https://github.com/thsrite/MoviePilot-Plugins.git
synced 2026-03-27 10:05:57 +00:00
feat PluginUnInstall v1.1
可选删除插件配置及数据
This commit is contained in:
@@ -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媒体库元数据,演职人员中文。`
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user