mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-08 17:08:35 +08:00
feat:未安装的插件,不加载模块
This commit is contained in:
+6
-10
@@ -122,6 +122,8 @@ class PluginManager(metaclass=Singleton):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# 已安装插件
|
||||||
|
installed_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
# 扫描插件目录
|
# 扫描插件目录
|
||||||
if pid:
|
if pid:
|
||||||
# 加载指定插件
|
# 加载指定插件
|
||||||
@@ -130,13 +132,11 @@ class PluginManager(metaclass=Singleton):
|
|||||||
filter_func=lambda name, obj: check_module(obj) and name == pid
|
filter_func=lambda name, obj: check_module(obj) and name == pid
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# 加载所有插件
|
# 加载已安装插件
|
||||||
plugins = ModuleHelper.load(
|
plugins = ModuleHelper.load(
|
||||||
"app.plugins",
|
"app.plugins",
|
||||||
filter_func=lambda _, obj: check_module(obj)
|
filter_func=lambda name, obj: check_module(obj) and name in installed_plugins
|
||||||
)
|
)
|
||||||
# 已安装插件
|
|
||||||
installed_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or []
|
|
||||||
# 排序
|
# 排序
|
||||||
plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0)
|
plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0)
|
||||||
for plugin in plugins:
|
for plugin in plugins:
|
||||||
@@ -152,11 +152,6 @@ class PluginManager(metaclass=Singleton):
|
|||||||
continue
|
continue
|
||||||
# 存储Class
|
# 存储Class
|
||||||
self._plugins[plugin_id] = plugin
|
self._plugins[plugin_id] = plugin
|
||||||
# 未安装的不加载
|
|
||||||
if plugin_id not in installed_plugins:
|
|
||||||
# 设置事件状态为不可用
|
|
||||||
eventmanager.disable_event_handler(plugin)
|
|
||||||
continue
|
|
||||||
# 生成实例
|
# 生成实例
|
||||||
plugin_obj = plugin()
|
plugin_obj = plugin()
|
||||||
# 生效插件配置
|
# 生效插件配置
|
||||||
@@ -201,7 +196,7 @@ class PluginManager(metaclass=Singleton):
|
|||||||
logger.info(f"正在停止插件 {pid}...")
|
logger.info(f"正在停止插件 {pid}...")
|
||||||
plugin_obj = self._running_plugins.get(pid)
|
plugin_obj = self._running_plugins.get(pid)
|
||||||
if not plugin_obj:
|
if not plugin_obj:
|
||||||
logger.warning(f"插件 {pid} 不存在或未加载")
|
logger.debug(f"插件 {pid} 不存在或未加载")
|
||||||
return
|
return
|
||||||
plugins = {pid: plugin_obj}
|
plugins = {pid: plugin_obj}
|
||||||
else:
|
else:
|
||||||
@@ -213,6 +208,7 @@ class PluginManager(metaclass=Singleton):
|
|||||||
# 清空对像
|
# 清空对像
|
||||||
if pid:
|
if pid:
|
||||||
# 清空指定插件
|
# 清空指定插件
|
||||||
|
self._plugins.pop(pid, None)
|
||||||
self._running_plugins.pop(pid, None)
|
self._running_plugins.pop(pid, None)
|
||||||
else:
|
else:
|
||||||
# 清空
|
# 清空
|
||||||
|
|||||||
Reference in New Issue
Block a user