Python 编写一个有道翻译的 workflow 教程
最近使用有道翻译的 workflow 总是翻译不了,可能是 appKey 失效了或者超过调用上限,所以打算自己实现一个。
创建 workflow
打开 Alfred3 的 Preferences,选择 Workflows。
下方有个+,单击后选择 Blank Workflow。完成基本信息的填写。
然后右击添加:Inputs->Script Filter。
Keyword 输入 yd,代表我们用'yd' 激活我们的 workflow。
写上合适的提示文字
Language 选择
/bin/bash或者/bin/zsh选择
with input as {query}脚本填入
python translate.py {query}, translate.py 是自己编写的 python 脚本。

可以找一个合适的图标拖到右上角图标的位置。
安装 Alfred-Workflow 库:
点击 Cancel 左边的图标,进入到 workflow 所在的目录。
或者右击 workflow 选择 Open in Finder

如果需要将自己编写的 workflow 分享给别人使用,则需要将 Alfred-Workflow 安装到 workflow 所在的目录。
# 进入到 workflow 所在目录
pip install Alfred-Workflow --target=.
申请 appKey
有道翻译的 api 现在是计费的,申请实例之后可以获得100元体验金,那就先用着吧。
先打开http://ai.youdao.com/,然后注册登录。接下来:
- 自然语言翻译=》翻译实例=》创建实例,选择文本翻译。
- 应用管理=》我的应用=》创建应用,接入方式选择API。创建成功后绑定服务。
- 点击应用的名称,进入应用详情页面,可以看到用来调用 api 的应用ID 和应用密钥。
编写 translate.py
# -*- coding:utf8 -*-
import sys
from workflow import Workflow3, web
def translate(wf):
import md5
import random
# 此处修改为你的应用 ID
appKey = '024b716exxxxxxxx'
# 此处修改为你的应用密钥
key = 'XWLYKxGoMK7474Ux1NXFxxxxxxxxxxxx'
query = sys.argv[1]
salt = str(random.randint(1, 65536))
sign = appKey + query + salt + key
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
params = dict(appKey=appKey, q=query, salt=salt, sign=sign)
r = web.get('https://openapi.youdao.com/api', params)
r.raise_for_status()
res = r.json()
if res.get('web'):
posts = res['web']
for post in posts:
wf.add_item(title=u" ".join(post['value']), subtitle=post['key'])
else:
wf.add_item(title=u"No result", subtitle="errorCode:"+res["errorCode"])
wf.send_feedback()
if __name__ == "__main__":
wf = Workflow3()
sys.exit(wf.run(translate))
测试
保存代码后,可以打开 workflow 的 debug,输入 yd hello进行测试。

如果出现错误,可以在有道的 API 文档中查询错误码列表,如上108代表的是appKey无效。
使用有效的appKey 后,效果如下:

参考链接:
Python 编写一个有道翻译的 workflow 教程的更多相关文章
- 用Python编写一个简单的Http Server
用Python编写一个简单的Http Server Python内置了支持HTTP协议的模块,我们可以用来开发单机版功能较少的Web服务器.Python支持该功能的实现模块是BaseFTTPServe ...
- 使用 python 编写一个授权登录验证的模块
使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ...
- 再也不怕和老外交流了!我用python实现一个微信聊天翻译助手!
前言 在前面的一篇文章如何用python“优雅的”调用有道翻译中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始.现在笔者又回来了.当你遇到一些外国小哥哥小姐姐很心动.想结 ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...
- 如何用Python编写一个聊天室
一.课程介绍 1.简介 本次项目课是实现简单聊天室程序的服务器端和客户端. 2.知识点 服务器端涉及到asyncore.asynchat和socket这几个模块,客户端用到了telnetlib.wx. ...
- 为Python编写一个简单的C语言扩展模块
最近在看pytorh方面的东西,不得不承认现在这个东西比较火,有些小好奇,下载了代码发现其中计算部分基本都是C++写的,这真是要我对这个所谓Python语音编写的框架或者说是库感觉到一丢丢的小失落,细 ...
- 用python编写一个合格的ftp程序,思路是怎样的?
经验1.一般在比较正规的类中的构造函数.都会有一个verify_args函数,用于验证传入参数.尤其是对于系统传参.2.并且系统传参,其实后面大概都是一个函数名 例如:python server. ...
- Python编写一个Python脚本
我想要一个可以为我的所有重要文件创建备份的程序.(下面测试环境为python2.7) 1.backup_ver1.py #!/usr/bin/python import os import time ...
- python爬虫之有道翻译
import urllib.request import urllib.parse import json class Translate(): def __init__(self): ...
随机推荐
- Git 安装配置手册
Git 安装配置手册 首先我们要了解 Git 是类似于 SVN 用来管理项目的 首先要先下载 Git ,这个东西相当于一个核,是该功能的核心 下载地址(<https://gitforwindow ...
- C# 曲线上的点(二) 获取距离最近的点
如何在一条曲线上,获取到距离指定点最近的点位置? 与上一篇 C# 曲线上的点(一) 获取指定横坐标对应的纵坐标值 类似, 我们通过曲线上获取的密集点,通过俩点之间连线,获取连线上最近的点.我们能够获取 ...
- Java开发笔记(八十一)如何使用系统自带的注解
之前介绍继承的时候,提到对于子类而言,父类的普通方法可以重写也可以不重写,但是父类的抽象方法是必须重写的,如果不重写,编译器就直接在子类名称那里显示红叉报错.例如,以前演示抽象类用法之时,曾经把Chi ...
- servlet doGet()方法获取字符串乱码问题
当你遇到ajax向servlet发送数据出现乱码问题的时候不要惊慌,现有以下两个解决办法 (1)在doGet和doPost方法中添加以下代码 request.setCharactersEncoding ...
- Where Can I Download Full Installers for WebLogic Server
Where can I download full installers for the different versions of WebLogic Server (WLS)? Full insta ...
- GZIP压缩与解压
public class GZIP { /** * 字符串的压缩 * * @param str * 待压缩的字符串 * @return 返回压缩后的字符串 * @throws IOException ...
- SwaggerAPI注解详解,以及注解常用参数配置
注解 @Api: 作用在类上,用来标注该类具体实现内容.表示标识这个类是swagger的资源 . 参数: tags:可以使用tags()允许您为操作设置多个标签的属性,而不是使用该属性. descri ...
- MyDAL - 组件适用范围说明
索引: 目录索引 一.组件特性简介: 1.MSIL 底层代码采用 System.Reflection.Emit.Lightweight 类库使用 IL 的方式处理 Model 组装,性能刚刚的~ 2. ...
- spark als scala实现(二)
Vi t1.txt1,101,5.01,102,3.01,103,2.52,101,2.02,102,2.52,103,5.02,104,2.03,101,2.53,104,4.03,105,4.5 ...
- 【导航】FPGA相关
[博客索引] FPGA相关 数字电路实现上,较多的经验是基于Xilinx/Altera的FPGA,使用Verilog语言,实现光传输SDH.OTN通信协议,DDR3控制器应用,以及视频分割.合并.sc ...