🖥
#GCP の Google 翻訳 #API を叩く #python スクリプト例。 #JSON を標準入力に与えると 翻訳結果のテキストを付
前提
- 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
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2019-04-09
Discussion