Alfred不再多说,试用一次之后,直接32欧上了Mega授权,杀器其实是Alfred Workflow,配置action,filter,可以有无限可能的操作。这里把deanishe上的Python写Afred Workflow的入门翻译一下放在这里,但是国内pinboard用的不多,这里用V2ex提供的最新主题列表的API,通过Alfred获取V2ex上的最新主题列表,来“本土化”翻译一下deanishe网站上的Python写workflow的入门。Alfred Workflow支持多种脚本语言编写,完全可以使用自己擅长的脚本来写。
Alfred Workflow支持多种脚本语言编写:bash,zsh,php,python,ruby,applescript,perl
下面按步用Python来做一个简单的的workflow。
创建一个新的Workflow
首先打开Alfred的首首选项(Preference), 切换到Workflow页签下。
如上图点击加号创建一个空白的workflow(Blank Workflow)。
为新创建的空白Workflow添加必要的描述
点击创建当弹出Workflow的信息面板时,这里就要给你要创建的Workflow添加名称,Bundle Id,还有可选的对workflow的简要描述。
Bundle Id是必须要填写的,因为在Aldred 和 Alfred Workflow内部需要依赖这个Bundle Id来唯一区分你这个Alfred Workflow,没有这个Bundle Id,Alfred Workflow就不能正常运行了。
除了这些必要的信息,还可以拖拽一图片到左侧的Icon区域,这会让你的Workflow看起来更漂亮些(这个icon会在Alfred Workflow的每条结果中显示出来)。
加入Script Filter(脚本过滤器)组件
下一步就是加入一个Script Filter(翻译成”脚本过滤器”),Script Filter接收Alfred的输入内容(即用户输入的查询内容)并将结果列表返回给Alfred。这个Script Filter(内部代码实现)需要尽可能的快速执行,因为用户每在Alfred的搜索框内输入一个字符都会调用执行一次这个Script Filter:
接下来点击这个Script Filter组件,为其加入更详细的信息。(Escaping选项暂时不必理会,这个Workflow不会接收查询)
想一个关键词,这个Keyword(关键词)的作用就是在你打开Alfred搜索框输入这个关键词的时候就会激活这个Workflow,现这个Workflow不接收任何参数,这里填No Argument,这个PlaceHolder Title(占位标题)和Subtext的作用就是在你输入Keyword(关键词)的过程中会显示出来(也就是用作提示的)。
“请稍等”这个提示是在你的Workflow工作的时候显示出来的(表明Workflow正在做相关的查询或者操作,这个例子里就是正在从网上的V2ex网站请求数据)。
非常重要的一点,设置Language(脚本语言)时,选择/bin/bash,并且在Script文本框里填写:
1 | python v2ex_new.py |
马上我们就会创建v2ex_new.py这个脚本文件,Escaping选项暂时不用管,这个例子里不会接收参数。
你也可以选择Language为/use/bin/python,并把实现的python代码粘贴到Script文本框里,但是这并不是最好的方法。
如果这样做(指粘贴Python代码到Script对应的文本框里),你就不能在终端里运行代码了,而且你也不能用一个顺手的编辑器,这样调试代码会非常困难。Python会告诉你哪一行代码出错,但是在Alfred的Script文本框里并没有行数标识,这样就凭空多出很多额外工作。
到这Alfred已经创建出来了Workflow,我们可以打开它并加入我们的脚本代码了,在左侧Workflow列表中右击你刚创建的Workflow,选择Open in Finder
打开目录会看到一个或者二个文件(取决于你之前是否拖拽了Icon图标)
此时需要从Github下载一个叫Afred-Workflow的包,拷贝解压到当前的Workflow目录
现在可以开始写代码了^_^
编写Python脚本
使用文本编辑器在当前的Workflow文件夹下创建v2ex_new.py并保存,向v2ex_new.py加下以下代码
1 | # encoding: utf-8 |
好,一切就绪,我们的Alfred Workflow应该可以工作了,打开Alfred搜索框,输入v2exnew并回车。你会看到如下界面:
可能会像下面这样发生错误
如果Alfred没有展示任何结果,那可能是Python脚本没有完全执行,在终端中打开Workflow的文件夹,使用如下命令运行Python脚本,应该会发现错误信息。
继续加入Workflow动作(action)
现在我们可以看到v2ex网站上的最新主题列表了,但是我们只能看,不能对每条结果做任何事情,现在我们就要让这些结果条目带上”动作”(比如,在某条结果上按回车就会发生一些事情,在这个例子中,我们就在浏览器中打开应最新主题的页面)。在v2ex_new.py文件加入下面高亮的二行。
1 | # encoding: utf-8 |
“valid=True”的意思就是告知Alred这条结果上的动作和对应的value值要传递给下一个action(动作),在这个例子里,就是URL。
此时再回到Alfred Preference(首选项) 面板切到Workflow界面,像添加ScriptFilter一样在Actions条目中找到Open URL,添加这个action:
详情界面在URL项中填入{query}(即上一步动作中传入的value值,就是对应主题的URL),下面还可以选项打开链接的浏览器。
这时把鼠标放到ScriptFilter上时就会在这个组件的右侧出现一个小的”突起”。
点住这个”突起”拖拽连接至Open URL动作上。
现在再次在Alfred中运行你的Workflow,选中任一一个结果并点击回车,对应的新主题就会在指定的浏览器中打开了。