JMComic-Crawler-Python/assets/docs/sources/tutorial/6_plugin.md

2.3 KiB
Raw Blame History

Plugin - 插件

plugin(扩展/插件)是v2.2.0新引入的机制,使用插件可以实现灵活无感知的功能增强。

plugin的机制为可在特定时间 回调 特定插件

目前jmcomic已经内置了一些强大的插件源码位于 src/jmcomic/jm_plugin.py。

配置插件的方式请查看 option_file_syntax

示例1. 使用login插件自动登录禁漫

特定时间after_initoption对象实例化完毕后

特定插件login

插件功能登录JM获取并保存cookies所有的Client都会使用这个cookies。

首先你需要在option配置文件当中配置如下内容来实现在after_init时调用login插件。

plugins:
  after_init: # 时机
    - plugin: login # 插件的key
      kwargs:
          # 下面是给插件的参数 (kwargs),由插件类自定义
          username: un # 禁漫帐号
          password: pw # 密码

有了上述option配置当你调用下面的代码时login插件就会执行。

import jmcomic
option = jmcomic.create_option('xxx.yml')
# 程序走到这里login插件已经调用完毕了。

示例2. 自定义插件

下面演示自定义插件分为3步:

  1. 自定义plugin类
  2. 让plugin类生效
  3. 使用plugin的key
  • 如果你有好的plugin想法也欢迎向我提PR将你的plugin内置到jmcomic模块中
# 1. 自定义plugin类
from jmcomic import JmOptionPlugin, JmModuleConfig, create_option


class MyPlugin(JmOptionPlugin):
    # 指定你的插件的key
    plugin_key = 'myplugin'

    # 覆盖invoke方法设定方法只有一个参数名为`hello_plugin`
    def invoke(self, hello_plugin) -> None:
        print(hello_plugin)

# 2. 让plugin类生效
JmModuleConfig.register_plugin(MyPlugin)

接下来在option中配置如下内容来使用你的插件

# 3. 在配置文件中使用plugin
plugins:
  after_init: # 时机
    - plugin: myplugin # 插件的key
      kwargs:
        hello_plugin: this is my plugin invoke method's parameter # 你自定义的插件的参数

完成上述步骤后每当你使用下面的代码你的plugin会被调用控制台就会打印出 this is my plugin invoke method's parameter

from jmcomic import create_option
option = create_option('xxx')