Skip to content
This repository has been archived by the owner on Sep 24, 2021. It is now read-only.

关于plugin的简单说明

iambus edited this page Feb 25, 2013 · 7 revisions

最新的代码引入了简单的plugin系统。一些非核心的功能会尽量使用扩展的方式提供(也可以防止过多小众需求进入主干代码)。

位置

在以下目录(不包含子目录)创建的.py脚本会自动加载:

  • lixian_plugins
  • lixian_plugins/commands
  • lixian_plugins/queries
  • lixian_plugins/parsers
  • lixian_plugins/filters

注意:文件名需要是不以_开头合法的python module文件名。技术上说,文件无论放在上述目录中的哪一个,效果都是一样的。

功能

目前支持四类plugins:

command

自定义lx扩展命令(比如lx echo hi)。

在命令行敲lx help,在Extended commands一段,可以看到完整的扩展命令列表。

具体的实现请参考lixian_plugins/commands下自带的几个例子。

query

在执行lx download,lx add,lx list等操作的时候,会先根据用户提供的参数进行查询和创建,然后再对结果进行操作。

比如lx download url会先查询url是否存在,如果不存在会先进行添加。

一个query plugin可以重写查询和任务添加阶段的操作。

比如可以针对特殊的关键字,使用专门的任务搜索规则。或者针对特别的url做地址转换和抽取。

具体的实现请参考lixian_plugins/queries下自带的几个例子。

parser

parser是一种特殊的query。可以从指定的url上抓取真实的地址。比如从verycd(已死)上抓取所有文件的ed2k链接。具体的分析算法需要在plugin中实现。

parser支持使用//做过滤。比如:

http://address//keyword/[0-9]

是分析网页http://address,然后使用关键字keyword过滤,再把结果中的前十个([0-9])返回。

注意bt种子不能使用这种方式抓取(但还是可以使用query)。

具体的实现请参考lixian_plugins/parsers下自带的几个例子。

filter

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下自带的几个例子。

故障排查

  1. 如果plugin未加载,请检查是否是合法的python module名。