编写DuckDuckGo插件变得更简单了

DuckDuckGo(一个不跟踪你的搜索引擎)背后的开发者已经让编写该网站的插件变得比以往任何时候都容易。随着本月底即将举行的第一次全球Quack & Hack活动,现在是参与其中的最佳时机。
即时答案
DuckDuckGo引擎支持多种类型的插件,但提供静态“速查表”的即时答案起步非常简单。之前开发新的即时答案需要Perl模块、测试文件和响应的纯文本版本。现在你只需要提供你的即时答案的JSON文件,就可以开始工作了。
设置
你需要将DuckDuckGo的仓库进行分叉,并将你的分叉仓库克隆到你的开发机器上。你可以选择安装App::DuckPAN,它可以启动一个用于测试你代码的本地DuckDuckGo站点。另一种测试速查表的方法是通过Codio。
即时答案JSON文件
即时答案JSON文件应创建在仓库中的share/goodie/cheat_sheets
目录中。一个好的开始方法是从现有的文件中复制一个,并将其修改为包含你的内容。
这是从我的perldoc
即时答案中的一个截断示例
{
"id": "perldoc_cheat_sheet",
"name": "perldoc",
"description": "Perl Documentation",
"metadata": {
"sourceName": "perldoc Manual",
"sourceUrl": "https://perldoc.perl5.cn/perldoc.html"
},
"section_order": ["Usage", "Module Options", "Search Options", "Common Options"],
"sections": {
"Usage": [
{
"key": "[perldoc <option>]",
"val": "start perldoc"
},
{
"key": "[perldoc perldoc]",
"val": "perldoc help"
}
],
...
}
}
id
和name
字段应该是描述插件的唯一值。metadata
字段描述即时答案中信息的来源。使用规范来源是好的——在这种情况下,我引用了官方的Perl文档。
sections
字段是即时答案的内容。每个条目都是键值对的数组。section_order
描述了搜索结果中显示部分的顺序,所以请确保将最重要的部分放在前面!
让我们更仔细地看看一个部分条目,这里是以Module Options
为例
"Module Options": [
{
"key": "Module::Name",
"val": "Show module documentation"
},
{
"key": "[-l Module::Name]",
"val": "Module filepath"
},
{
"key": "[-m Module::Name]",
"val": "Module source code"
},
{
"key": "[-lm Module::Name]",
"val": "Module filepath (alt.)"
}
],
“Module Options”是部分名称,这必须在section_order
字段中完全存在,否则这个部分将不会显示。部分名称文本用于该部分的副标题,所以请确保选择一些可读性好的: “Module Options”比“module_options”要好。
每个键值对条目代表即时答案中要显示的文本,key
文本应该是代码,val
是描述。如果key
文本包含空格,请将文本用方括号括起来以确保它在网页上显示为代码(参见这篇文章的封面图像以获取示例)。你可以在这里找到完整的perldoc JSON文件:这里。
总结
你可以使用App::DuckPAN测试你的即时答案(见我之前的文章中的示例)。如果你想要与开发者讨论你的即时答案,或者解决问题,DuckDuckGo团队在Slack上,你可以通过电子邮件请求访问。官方的文档也非常有用。
一旦你完成了一个即时答案,创建一个拉取请求!DuckDuckGo开发者将审查你的代码并提供反馈。一旦你的即时答案获得批准,它将在几天内上线。
更新:已更改DDG Slack的聊天详情,日期为2015-08-26
本文最初发布在PerlTricks.com。
标签
反馈
这篇文章有什么问题吗?请通过在GitHub上打开一个问题或拉取请求来帮助我们。