Alfred 是 Mac 下一款强悍的系统加强工具,能够快速启动+搜索本地和网络任意内容。购买其付费版本的 Power Pack 还能启用 Workflow 功能,使用一门经常使用的脚本开发语言就能编写本身的工做流来实现各类有趣的插件。(这里有国人收集的不少现成的 Workflow 插件下载)php
今天心血来潮花了17英镑购买了 license,搜刮了几个本身可能用到的脚本,顺便研究了下如何进行 Alfred 脚本编写。只需简单的 PHP 就能完成一个 workflow。html
这里以编写一个 Alfred 里的日文单词翻译器为例,简单介绍下流程。git
基本原理:获取用户在 Alfred 内输入的内容(日文单词) -> POST 到百度云提供的翻译 API 获取翻译结果 -> 解析结果 -> 调用 Alfred Workflow 的方法输出成 Alfred 格式。github
完成以后的效果是这样的:json
1、建立新的 Workflowsegmentfault
2、填写 Workflow 信息api
随便写写便可。微信
3、设置脚本参数网络
点击空白 Workflow 右上角的加号按钮,Inputs -> Script Filter,弹出以下窗口。app
4、复制 PHP 库文件
点击 Save 按钮上方的 Open workflow folder,将进入当前 Workflow 的本地工程目录。切换到上层,再进入其下的其余目录下复制一个 workflow.php 回来。(解析 PHP 脚本所需的库文件,默认在工程目录下不会有,因此须要从现有的其余工程目录里拷一个,若是找不到能够直接从这里取)
5、Script 区域输入代码
由于比较简单,因此直接上代码(你也能够从这里获取):
require('workflows.php'); // Settings define('TRANS_QUERY_URL','http://openapi.baidu.com/public/2.0/bmt/translate?client_id=Vn8ockFtPxNM655RP4iVWixU&from=auto&to=auto&q='); // Main Phrase $wf = new Workflows(); $query = "{query}"; $json = json_decode($wf->request(TRANS_QUERY_URL.$query)); // Fetch Result foreach ($json->trans_result as $translation): $result['src'] = $translation->src; $result['dst'] = $translation->dst; $wf->result(1, 'http://www.baidu.com',$result['dst'],$query,'icon.png','yes'); endforeach; // Export Results echo $wf->toxml();
6、设置动做
点击 Save 保存上述脚本。
返回编辑区,点击右上角加号,选择“Actions->Open URL”,在弹出窗口的 “URL:”里填入“{query}”,保存。将编辑区出现的两个模块拖动链接。
至此整个过程完毕。
如今,激活 Alfred(我设置为双击 Command 键),输入“jp [日文单词]”,就能调用百度翻译的 API 查看到单词释义了。
另外我还作了个游戏王卡牌查询的 Alfred 脚本,代码在此。
总体说来,Alfred Workflow 的编写跟微信公众平台开发比较相似,要作的无非就是输入什么、如何处理及输出什么,没有特别复杂高深的东西,主要仍是看想象力。
原文地址:http://www.fanbing.net/alfred-workflow-programming-tutorial.html