zoukankan      html  css  js  c++  java
  • Python 编写一个有道翻译的 workflow 教程

    最近使用有道翻译的 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 后,效果如下:

    参考链接:

  • 相关阅读:
    golang基础之第一个go程序
    golang基础之工程结构
    golang基础之初识
    Prometheus神器之监控K8s集群
    Kubernetes使用GlusterFS实现数据持久化
    Go使用Makefile构建
    快排的2种分区图解
    密钥交换之DH算法
    go mod使用
    socket常见选项之SO_REUSEADDR,SO_REUSEPORT
  • 原文地址:https://www.cnblogs.com/flipped/p/9473701.html
Copyright © 2011-2022 走看看