最近使用有道翻译的 workflow 总是翻译不了,可能是 appKey 失效了或者超过调用上限,所以打算自己实现一个。

创建 workflow

打开 Alfred3 的 Preferences,选择 Workflows。

下方有个+,单击后选择 Blank Workflow。完成基本信息的填写。

然后右击添加:Inputs->Script Filter

  1. Keyword 输入 yd,代表我们用'yd' 激活我们的 workflow。

  2. 写上合适的提示文字

  3. Language 选择 /bin/bash 或者 /bin/zsh

  4. 选择with input as {query}

  5. 脚本填入python translate.py {query}, translate.py 是自己编写的 python 脚本。

  6. 可以找一个合适的图标拖到右上角图标的位置。

安装 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/,然后注册登录。接下来:

  1. 自然语言翻译=》翻译实例=》创建实例,选择文本翻译。
  2. 应用管理=》我的应用=》创建应用,接入方式选择API。创建成功后绑定服务。
  3. 点击应用的名称,进入应用详情页面,可以看到用来调用 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 教程的更多相关文章

  1. 用Python编写一个简单的Http Server

    用Python编写一个简单的Http Server Python内置了支持HTTP协议的模块,我们可以用来开发单机版功能较少的Web服务器.Python支持该功能的实现模块是BaseFTTPServe ...

  2. 使用 python 编写一个授权登录验证的模块

    使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ...

  3. 再也不怕和老外交流了!我用python实现一个微信聊天翻译助手!

    前言 在前面的一篇文章如何用python“优雅的”调用有道翻译中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始.现在笔者又回来了.当你遇到一些外国小哥哥小姐姐很心动.想结 ...

  4. 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...

  5. 如何用Python编写一个聊天室

    一.课程介绍 1.简介 本次项目课是实现简单聊天室程序的服务器端和客户端. 2.知识点 服务器端涉及到asyncore.asynchat和socket这几个模块,客户端用到了telnetlib.wx. ...

  6. 为Python编写一个简单的C语言扩展模块

    最近在看pytorh方面的东西,不得不承认现在这个东西比较火,有些小好奇,下载了代码发现其中计算部分基本都是C++写的,这真是要我对这个所谓Python语音编写的框架或者说是库感觉到一丢丢的小失落,细 ...

  7. 用python编写一个合格的ftp程序,思路是怎样的?

      经验1.一般在比较正规的类中的构造函数.都会有一个verify_args函数,用于验证传入参数.尤其是对于系统传参.2.并且系统传参,其实后面大概都是一个函数名 例如:python server. ...

  8. Python编写一个Python脚本

    我想要一个可以为我的所有重要文件创建备份的程序.(下面测试环境为python2.7) 1.backup_ver1.py #!/usr/bin/python import os import time ...

  9. python爬虫之有道翻译

    import urllib.request import urllib.parse import json class Translate():     def __init__(self):     ...

随机推荐

  1. spring的理解

    看过<fate系列>的博友知道,这是一个七位英灵的圣杯争夺战争.今天主要来谈谈圣杯的容器概念,以便对spring的理解. 圣杯: 圣杯本身是没有实体的,而是将具有魔术回路的存在(人)作为“ ...

  2. centos7 ipaddr 无法查看虚拟机IP解决办法

    原因是: CentOS 7 默认是不启动网卡的 解决办法:https://blog.csdn.net/wxx729418277/article/details/79130649

  3. Web后端 JAVA学习之路

    1.Java分类 Java按应用来分,可以分为J2ME(手机版),J2SE(标准版),J2EE(企业版)三部分. ・J2ME:已经被安卓开发取代. ・J2SE:Java的核心类,其中包括桌面应用,但一 ...

  4. react 脚手架 立即可以写业务 react + react-router-dom + less + axios + antd

    https://github.com/cynthiawupore/wq-cli

  5. CSS 三条横线等分

    .header_qian { width: 1.5rem; height: 1.5rem; background: rgba(250, 250, 250,0.7); border-radius: 50 ...

  6. ButterKnife的使用详解

    ButterKnife的使用详解 1,概述: ButterKnife则是注解中相对简单易懂的很不错的开源框架. ButterKnife是目前常用的一种依托Java注解机制实现辅助代码生成的框架:用到了 ...

  7. Android远程桌面助手(B1371)

    Android远程桌面助手(B1371),下载:https://files.cnblogs.com/files/we-hjb/ARDC%28B1371%29.7z 1.增加了对超大分辨率4320*21 ...

  8. USB_ModeSwitch for Android 7

    USB_ModeSwitch官网: USB_ModeSwitch - Handling Mode-Switching USB Devices on Linux USB_ModeSwitch for A ...

  9. 云服务器内,nginx安装部署,Xshell,Xftp安装

    nginx部署 三丰云云服务器,安装nginx nginx部署 在宝塔面板,添加Nginx安装,一般进来会默认推荐安装几款软件,mysql等,暂时可以后面再装,先把nginx装上去,去感受将前端页面放 ...

  10. 测者的测试技术手册:自动化的自动化EvoSuite:Maven项目集成EvoSuite实战

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...