前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 编写一个有道翻译的 workflow 教程

Python 编写一个有道翻译的 workflow 教程

作者头像
饶文津
发布2020-06-02 12:02:15
7920
发布2020-06-02 12:02:15
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

最近使用有道翻译的 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 脚本。
  1. 可以找一个合适的图标拖到右上角图标的位置。

安装 Alfred-Workflow 库:

点击 Cancel 左边的图标,进入到 workflow 所在的目录。 或者右击 workflow 选择 Open in Finder

如果需要将自己编写的 workflow 分享给别人使用,则需要将 Alfred-Workflow 安装到 workflow 所在的目录。

代码语言:javascript
复制
# 进入到 workflow 所在目录
pip install Alfred-Workflow --target=.

申请 appKey

有道翻译的 api 现在是计费的,申请实例之后可以获得100元体验金,那就先用着吧。 先打开http://ai.youdao.com/,然后注册登录。接下来:

  1. 自然语言翻译=》翻译实例=》创建实例,选择文本翻译。
  2. 应用管理=》我的应用=》创建应用,接入方式选择API。创建成功后绑定服务。
  3. 点击应用的名称,进入应用详情页面,可以看到用来调用 api 的应用ID 和应用密钥。

编写 translate.py

代码语言:javascript
复制
# -*- 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 后,效果如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建 workflow
  • 安装 Alfred-Workflow 库:
  • 申请 appKey
  • 编写 translate.py
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档