Python中如何开发Alfred Workflow?中文入门教程分享
这两天晚上学习了一下 mac 上的 workflow 开发,写出了两个小玩意。想着之前在网上,没有看到比较详细的中文开发教程(虽然,开发过程其实很简单),就自己写了个入门级的教程。希望对这方面入门级别的开发有所帮助。 开发语言可以是 Python/Php...
详细的开发教程在地址: http://allenwu.itscoder.com/how-to-write-a-workflow-for-mac
两个 Demo 级别的 workflow 地址: https://github.com/wuchangfeng/Vino-Workflow
自己写的两个玩意,一个是 Gank 的搜索,一个是 有道的翻译:

==================================================================

Python中如何开发Alfred Workflow?中文入门教程分享
写的很不错。赞
要开发Alfred Workflow,核心是创建脚本过滤器(Script Filter)和动作(Action)。这里给你一个完整的Python示例,展示如何创建一个搜索GitHub仓库的Workflow。
首先,确保安装了Alfred Powerpack,然后打开Workflow编辑器创建新Workflow。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import sys
import urllib.request
from urllib.parse import quote
def search_github_repos(query):
"""搜索GitHub仓库"""
if not query:
return []
url = f"https://api.github.com/search/repositories?q={quote(query)}&sort=stars"
try:
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Alfred-Workflow')
with urllib.request.urlopen(req) as response:
data = json.loads(response.read().decode('utf-8'))
items = []
for repo in data.get('items', [])[:10]: # 限制前10个结果
item = {
'title': repo['full_name'],
'subtitle': repo['description'] or 'No description',
'arg': repo['html_url'], # 传递给下一个动作的参数
'icon': {'path': 'icon.png'}
}
items.append(item)
return items
except Exception as e:
return [{
'title': 'Error',
'subtitle': str(e),
'valid': False
}]
def main():
query = sys.argv[1] if len(sys.argv) > 1 else ''
results = search_github_repos(query)
# 输出Alfred可识别的JSON格式
output = {
'items': results
}
print(json.dumps(output))
if __name__ == '__main__':
main()
保存这个脚本,然后在Alfred中:
- 添加"Script Filter"输入
- 语言选择"/bin/bash"
- 命令填
python3 /path/to/your/script.py "{query}" - 添加"Open URL"动作连接到Script Filter的输出
关键点:Alfred Workflow通过stdin/stdout与脚本通信,输出必须是特定JSON格式。Script Filter返回的结果中,arg字段会传递给下一个动作。
更复杂的Workflow可以用alfred-workflow库简化开发。
总结:用Python脚本处理查询,输出标准JSON格式给Alfred。
干货前编辑来赞一个 (逃
Alfred Workflow 都还不怎么会用呢…
哈哈,谢谢,因为自己看的是全英文的教程,虽然简单,但是对于大部分人来讲还是有点抵触,所以就写了个“图文并茂”中文小白教程…
嘿嘿,我认得大兄弟你。跟着你的博客学到了不少东西,谢谢啦。
赶紧尝试下呗,炒鸡好用的,都说是 Mac 上的神器
我都是直接 shell 写的,一个有道一个查 ip,shell 写挺方便的
这个棒
python 和 shell 写这个还是比较好玩的
嘿嘿,其实都差不多,主要自己会点 Python ,改天学习下 shell 。
是的,希望有点小用处。
小弟去干活、学习了,有什么建议,可以直接留言。博客为了简洁,没有添加多说,不好意思啦。对了小弟找一份实习,有兴趣的看一下博客的 About 中的 Resume (逃
写的很不错。赞
博客很简洁啊。用 hexo 搭建的吗?请问
很赞
更新啦,添加了 V2EX 当日 10 大热门帖子的 workflow ,哈哈,因地制宜。
好赞啊!
Alfred 能不能自动操作 mac 版微信?
在想如果晚睡加班到 9 点就自动打开微信给我老婆发一条微信说今晚加班,晚点回。
如果能添加单词到生词本就完美了
这个不难,我看到有人实现过,等周末看看可有时间,来研究下
这个应该不能吧。。。
嘿嘿,很简单的,肯花时间研究下都能做出来
好的,周末看看可有时间更新下。我用 Python 写的脚本,调试是直接在终端命令行 python xxx.py ,看报什么错。如果开了 log 日志,在 workflow 入口也能报简单的提示。
workflow 里面有一个 utilities ,里面有个 debug 的选项。
好的,谢谢你 我也只是入门级别的。
wox : windows 版的 alfred ,来源免费~
谢谢
这个不错,学习下,后面也试试


