天天看點

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 腳本。
    Python 編寫一個有道翻譯的 workflow 教程
  6. 可以找一個合适的圖示拖到右上角圖示的位置。

安裝 Alfred-Workflow 庫:

點選 Cancel 左邊的圖示,進入到 workflow 所在的目錄。

或者右擊 workflow 選擇 Open in Finder

Python 編寫一個有道翻譯的 workflow 教程

如果需要将自己編寫的 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

進行測試。

Python 編寫一個有道翻譯的 workflow 教程

如果出現錯誤,可以在有道的 API 文檔中查詢錯誤碼清單,如上108代表的是appKey無效。

使用有效的appKey 後,效果如下:

Python 編寫一個有道翻譯的 workflow 教程

參考連結:

  • http://www.deanishe.net/alfred-workflow/
  • 有道智雲

┆涼┆暖┆降┆等┆幸┆我┆我┆裡┆将┆ ┆可┆有┆謙┆戮┆那┆ ┆大┆始┆ ┆然┆

┆薄┆一┆臨┆你┆的┆還┆沒┆ ┆來┆ ┆是┆來┆遜┆沒┆些┆ ┆雁┆終┆ ┆而┆

┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆沒┆ ┆你┆

┆ ┆這┆ ┆試┆方┆在┆逃┆ ┆會┆ ┆在┆ ┆清┆來┆準┆ ┆沒┆有┆ ┆沒┆

┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆這┆ ┆晨┆ ┆的┆ ┆有┆來┆ ┆有┆

┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆這┆ ┆裡┆ ┆沒┆ ┆殺┆ ┆來┆ ┆ ┆來┆

繼續閱讀