-
Notifications
You must be signed in to change notification settings - Fork 378
关于plugin的简单说明
最新的代码引入了简单的plugin系统。一些非核心的功能会尽量使用扩展的方式提供(也可以防止过多小众需求进入主干代码)。
在以下目录(不包含子目录)创建的.py脚本会自动加载:
- lixian_plugins
- lixian_plugins/commands
- lixian_plugins/queries
- lixian_plugins/parsers
- lixian_plugins/filters
注意:文件名需要是不以_开头的合法的python module文件名。技术上说,文件无论放在上述目录中的哪一个,效果都是一样的。
目前支持四类plugins:
自定义lx扩展命令(比如lx echo hi)。
在命令行敲lx help,在Extended commands一段,可以看到完整的扩展命令列表。
具体的实现请参考lixian_plugins/commands下自带的几个例子。
在执行lx download,lx add,lx list等操作的时候,会先根据用户提供的参数进行查询和创建,然后再对结果进行操作。
比如lx download url会先查询url是否存在,如果不存在会先进行添加。
一个query plugin可以重写查询和任务添加阶段的操作。
比如可以针对特殊的关键字,使用专门的任务搜索规则。或者针对特别的url做地址转换和抽取。
具体的实现请参考lixian_plugins/queries下自带的几个例子。
parser是一种特殊的query。可以从指定的url上抓取真实的地址。比如从verycd(已死)上抓取所有文件的ed2k链接。具体的分析算法需要在plugin中实现。
parser支持使用//做过滤。比如:
http://address//keyword/[0-9]
是分析网页http://address,然后使用关键字keyword过滤,再把结果中的前十个([0-9])返回。
注意bt种子不能使用这种方式抓取(但还是可以使用query)。
具体的实现请参考lixian_plugins/parsers下自带的几个例子。
filter也是一种特殊的query,可以实现自定义的任务搜索规则。
比如lixian_plugins/filters/regexp.py增加了正则表达式搜索的规则:
lx list regexp:keyword
filter也可以被应用于bt文件的过滤,和parser结果的过滤:
lx list task-id/regexp:keyword/keyword2
lx download http://address//regexp:keyword/keyword2
需要注意的是,因为bt文件和parser结果的过滤都使用/作为多个filter的分隔符,这种情况filter代码收不到/(如果有需要,以后可以考虑支持转义)。
具体的实现请参考lixian_plugins/filters下自带的几个例子。
- 如果plugin未加载,请检查是否是合法的python module名。