Files
archived-MoviePilot-Plugins/docs/faq/11-override-system-module.md
2026-04-20 21:43:30 +08:00

1.5 KiB
Raw Blame History

如何通过插件重载实现系统模块功能?

返回 README | FAQ 索引

(仅支持 v2.4.4+ 版本)

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