如果要实现自定义workflow,则必须安装付费版的alfred,囊中羞涩的话可以自行淘宝。自定义步骤如下:
1. 新建空的workflow,填写基本信息
2. 开发python脚本
打开该workflow所在目录,进行下面步骤:
- 首先安装谷歌翻译库:
pip install googletrans==3.1.0a0
- 编写py脚本
import sys
import json
from googletrans import Translator
def main(input_text):
d = {
"en": "zh-CN",
"zh-CN": "en"
}
translator = Translator()
lang = translator.detect(input_text).lang
alfred_results = []
# 中英文互译
if lang in d:
text = translator.translate(input_text, dest=d[lang]).text
alfred_results.append({
"title": text,
"arg": text, # 该参数不可省略,将用于后续的剪贴板复制;否则后续动作无法触发
"icon": {
"path": "./google_translate.png"
}
})
else:
alfred_results.append({
"title": "未识别语种",
"icon": {
"path": "./google_translate.png"
}
})
return json.dumps({
"items": alfred_results
}, ensure_ascii=False)
if __name__ == "__main__":
resp = "no input text to translate"
if len(sys.argv) >= 2:
input_text = "\t".join(sys.argv[1:])
resp = main(input_text)
sys.stdout.write(resp)
3. 编辑工作流
- 新建script filter:
配置信息说明:
- 触发谷歌翻译关键词:
tr
- 将输入看做
{query}
- 调用python脚本进行翻译:
python ./translate.py "{query}"
- 避免一些转义符
- 新增剪贴板
在filter后面接一个clipboard:
4. 调试工作流
右侧有个虫子标记,点击。然后调起alfred,输入命令测试,下面的控制台会打印日志信息:
如果上述步骤一切顺利的话,你的工作流就实现了。
参考
- googletrans
- Alfred工作流workflows实例