Alfred-Workflow 项目教程
1. 项目介绍
Alfred-Workflow 是一个用于编写 Alfred 3 和 Alfred 4 工作流的 Python 库。它为开发者提供了一系列工具,使得创建功能丰富且响应迅速的 Alfred 工作流变得更加简单。Alfred-Workflow 支持 macOS 10.7+,并且兼容 Python 2.7。
主要特性
- 自动保存设置:方便管理工作流的配置。
- 数据缓存:支持数据缓存并设置过期时间。
- 模糊过滤:智能处理带有变音符号的字符。
- Keychain 支持:安全存储密码和 API 密钥。
- 轻量级 Web API:提供类似 Requests 的接口,方便进行网络请求。
- 后台任务:保持工作流响应迅速。
- Alfred JSON 反馈:简化生成 Alfred 反馈的过程。
- 错误处理:自动捕获和记录工作流中的错误。
- 开发辅助:支持“魔法”参数,方便开发和调试。
- Unicode 支持:全面支持 Unicode 字符。
- 自动更新检查:通过 GitHub 发布自动检查更新。
- 通知中心支持:通过 macOS 的通知中心发送通知。
2. 项目快速启动
安装
使用 pip 安装
你可以直接在 Alfred 工作流目录中使用 pip 安装 Alfred-Workflow:
pip install --target=. Alfred-Workflow
从源码安装
- 从 GitHub 发布页面下载
alfred-workflow-X.X.X.zip
。 - 解压 ZIP 文件并将
workflow
目录放置在你的工作流根目录(即info.plist
所在目录)。
使用示例
以下是一个简单的 Alfred-Workflow 脚本示例:
#!/usr/bin/python
# encoding: utf-8
import sys
from workflow import Workflow3
def main(wf):
# 获取命令行参数
args = wf.args
# 添加一个 Alfred 反馈项
wf.add_item(u'项目标题', u'项目副标题')
# 发送反馈到 Alfred
wf.send_feedback()
if __name__ == '__main__':
wf = Workflow3()
sys.exit(wf.run(main))
3. 应用案例和最佳实践
缓存数据
Alfred-Workflow 提供了方便的数据缓存功能,可以缓存数据并在指定时间后过期:
def get_web_data():
return web.get('http://www.example.com').json()
def main(wf):
# 缓存数据 30 秒
data = wf.cached_data('example', get_web_data, max_age=30)
for datum in data:
wf.add_item(datum['title'], datum['author'])
wf.send_feedback()
网络请求
使用 Alfred-Workflow 的 web
模块进行网络请求:
data = web.get('http://www.example.com/api/1/stuff').json()
Keychain 访问
安全存储和获取密码:
wf = Workflow()
wf.save_password('account_name', 'password123')
password = wf.get_password('account_name')
4. 典型生态项目
Alfred 工作流
- Alfred 3 & 4:Alfred-Workflow 主要用于编写 Alfred 3 和 Alfred 4 的工作流。
- Alfred 扩展:Alfred 提供了丰富的扩展功能,Alfred-Workflow 可以帮助你更轻松地创建这些扩展。
Python 生态
- Requests:Alfred-Workflow 的
web
模块基于 Requests 库,提供了类似的功能和接口。 - Keyring:Alfred-Workflow 的 Keychain 支持基于 Python-Keyring 库,提供了安全的密码存储功能。
通过以上内容,你可以快速上手使用 Alfred-Workflow 创建功能强大的 Alfred 工作流。