
cree.py 的插件
cree.py 的架构允许多个用户自定义的地理位置信息来源。这些来源以插件形式定义,通过将插件复制到安装目录下的 plugins 文件夹,即可将其安装到 creepy 中。
如果你希望与其他用户分享插件,请为新插件创建拉取请求,我会验证并将其合并到仓库中。
creepy 的插件至少需要 3 个文件:
模块架构借助 yapsy (http://yapsy.sourceforge.net) 构建。请在 plugin_name.yapsy-plugin 文件中包含以下信息:
[Core]
Name = 插件名称
Module = plugin_name
[Documentation]
Author =
Version =
Website =
Description =
包含插件逻辑的 Python 文件。该文件需要继承 InputPlugin 类,并至少实现一系列方法,因此应按如下方式定义(参见行内注释):
from models.InputPlugin import InputPlugin
class PluginName(InputPlugin):
name="plugin_name"
'''
如果插件配置需要调用向导
(例如用于 oAuth 授权),此项必须设置为 true
'''
hasWizard=True
def searchForTargets(self, search_term):
'''
参数
----------
search_term : str
用户在“新建项目”向导中输入的关键词。可以是邮箱、ID、
用户名、全名等;插件需根据需要进行不同类型之间的区分。
接受用户输入的字符串参数,在相应服务/源中执行搜索,
识别可能包含在流程中的目标。
返回一个字典列表,每个字典对应一个已识别目标;如果没有找到结果则返回空列表。
字典需包含以下键:
target = {'pluginName':'插件名称',
'targetUserid' : '目标在服务/源中的用户ID',
'targetUsername' : '目标在服务/源中的用户名',
'targetPicture' : '目标头像文件名 (profile_pic_targetUserid)',
'targetFullname' : '目标的全名'}
'''
your_code_here()
def runConfigWizard(self):
'''
如果插件配置需要向导,请在此处创建。在返回前,需要将配置值保存到插件的配置文件中。
可通过从 InputPlugin 继承的 readConfiguration(category) 方法访问插件配置文件。
该方法返回一个元组 config, options,其中:
-- config 是 ConfigObj 文件,可通过调用其 write() 方法保存配置
-- options 是包含配置类别选项的字典
'''
def isConfigured(self):
'''
返回一个元组。第一个元素为 True 或 False,取决于插件是否已配置。第二个元素包含一条可选信息,供用户查看
'''
def returnLocations(self, target, search_params):
'''
参数
----------
target : dict
search_params : dict
返回指定目标的位置字典列表(若未找到位置则返回空列表),使用指定的搜索参数
target 是一个包含 searchForTargets 中定义的信息的字典;search_params 是一个
包含搜索参数的字典,这些参数应在配置文件中定义为可用选项
(参见下面的 plugin_name.conf)。
位置字典需要包含以下键:
loc = {'plugin' : 'twitter'
'context' : '位置的上下文'
'infowindow' : "包含位置信息的 HTML,显示在地图的 infoWindow 中"
'date' : '表示地理位置创建时间的 datetime.datetime 对象'
'lat' : '纬度'
'lon' : '经度'
'shortName' : '位置的短名称,若无则为空字符串'}
'''
如果插件需要使用未随 Python 分发的外部模块,则需要明确告知用户,最好附带各平台下依赖安装的说明。
该文件包含所有配置选项,并应包含以下章节(部分或全部可能为空):
[string_options]
key1 = value
[boolean_options]
key2 = True
key3 = False
[search_string_options]
key4 = some value
[search_boolean_options]
key5 = True
string_options 和 boolean_options 将作为配置选项出现在“插件配置”对话框中。
search_string_options 和 search_boolean_options 将作为搜索选项出现在“新建项目”向导中。
如果某个值需要在 GUI 中屏蔽显示(例如密码、访问令牌等),请在键名前加上 hidden_ 前缀,cree.py 会自动处理。
如果你希望配置选项在 GUI 中具有更友好的名称,可以在此处为它们提供标签。例如,以上面 conf 文件为参考,plugin_name.labels 文件可以这样写:
[labels]
key1 = 键1的标签
key2 = 键2的标签
key3 = 键3的标签
key4 = 键4的标签
key5 = 键5的标签
如果未为某个键指定标签,则在 GUI 中直接显示该键。
将以上所有文件收集到一个名为 plugin_name 的文件夹中,然后将该文件夹复制到已安装应用程序的 plugins 目录下。就是这么简单!