mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-24 07:26:52 +00:00
1.5 KiB
1.5 KiB
如何通过插件重载实现系统模块功能?
(仅支持 v2.4.4+ 版本)
- MoviePilot中通过
chain层实现业务逻辑,在modules中实现各自独立的功能模块。chain处理链通过查找modules中实现了所需方法(比如: post_message)的所有模块并按一定的规则执行,从而编排各模块能力来实现复杂的业务功能。v2.4.4+版本中赋于插件胁持系统模块的能力,可以通过插件来重新实现系统所有内置模块的功能,比如支持新的下载器、媒体服务器等(在用户界面中配合新增自定义下载器和媒体服务器)。 -
- 在插件中实现
get_module方法,申明插件要重载的模块方法。所有可用的模块方法名参考chain目录下的处理链文件(run_module方法的第一个参数),公共处理在chain/__init__.py中,方法入参和出参需要保持一致。
- 在插件中实现
def get_module(self) -> Dict[str, Any]:
"""
获取插件模块声明,用于胁持系统模块实现(方法名:方法实现)
{
"id1": self.xxx1,
"id2": self.xxx2,
}
"""
pass
-
- 在插件中实现声名的方法逻辑,处理链执行时,会优先处理插件声明的方法。如果插件方法未实现或者返回
None,将继续执行下一个插件或者系统模块的相同声明方法;如果对应的方法需要返回是的列表对象,则会执行所有插件和系统模块的方法后将结果组合返回。
- 在插件中实现声名的方法逻辑,处理链执行时,会优先处理插件声明的方法。如果插件方法未实现或者返回