🖥

#GCP の Google 翻訳 #API を叩く #python スクリプト例。 #JSON を標準入力に与えると 翻訳結果のテキストを付

2019/04/09に公開

前提

  • gcloud コマンドが使えること
  • サービスアカウントファイルを作成していること
  • Google Translate API やらの設定が済んでいること

ref google翻訳 yumanaura - Google Search

./get-token.sh

フレッシュでナウでヤングな Access Token を得る簡単なシェルスクリプト

GOOGLE_APPLICATION_CREDENTIALS=~/.secret/google-service-credential.json gcloud auth application-default print-access-token

./translate-json.py

  • 標準入力で json を与える
  • json はオブジェクトの配列を想定
  • 翻訳したいjson 的なキーを 環境変数 TRANSLATE_JSON_KEY で渡す
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os, sys, requests, json, fileinput, re

json_lines = sys.stdin.read()

from_language = os.environ.get('FROM') if os.environ.get('FROM') else 'ja'
to_language = os.environ.get('TO') if os.environ.get('TO') else 'en'

token = os.environ['TOKEN']
translate_json_key = os.environ['TRANSLATE_JSON_KEY']

headers = {
 'Authorization': 'Bearer {}'.format(token),
 'Content-Type': 'application/json',
}
 
api_url = 'https://translation.googleapis.com/language/translate/v2'

results = []

for line in json.loads(json_lines):
  params = {
    'q': line[translate_json_key],
    'source': from_language,
    'target': to_language,
    'format': 'text'
  }
 
  res = requests.post(api_url, headers=headers, json=params)

  translated_text = res.json()['data']['translations'][0]['translatedText']

  line["translated_text"] = translated_text

  results.append(line) 
 
print(json.dumps(results))

exe

$ echo '[{"text":"洋梨", "owner": "Yuma"}, {"text" : "りんご", "owner" : "Inaura"}]' | TOKEN=$(./get-token.sh) TRANSLATE_JSON_KEY=text ./translate-json.py | jq .
[
  {
    "text": "洋梨",
    "owner": "Yuma",
    "translated_text": "Pear"
  },
  {
    "text": "りんご",
    "owner": "Inaura",
    "translated_text": "Apple"
  }
]

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/1131

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-04-09

Discussion