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