DeepL API:https://www.deepl.com/ja/docs-api/translating-text/
Python Requestsライブラリ:https://note.nkmk.me/python-requests-usage/
DeepL APIは、パラメータtext
を1回のリクエストで複数個設定することが可能である。
GETメソッドで言えば、以下のような形式のURLが可能である。
https://api-free.deepl.com/v2/translate?auth_key={...}&text={1つ目のテキスト}&text={2つ目のテキスト}&text={3つ目のテキスト}&target_lang={...}
HTTPリクエストにPythonのRequestsライブラリを使用している場合、複数のテキストを一度に翻訳するには、パラメータtext
をリストにすればよい(リストの最大要素数は50)。
sample.py
import requests
API_KEY = '__YOUR_API_KEY__'
TEXT = 'Dragon Quest #3 is my favorite game.'
TEXT2 = 'Dragon Quest #5 is also my favorite game.'
URL = "https://api-free.deepl.com/v2/translate" # Free版の場合
# URL = "https://api.deepl.com/v2/translate" # 有料版の場合
params = {
"auth_key": API_KEY,
"text": [TEXT,TEXT2],
"target_lang": 'JA'
}
request = requests.post(URL, data=params)
result = request.json()
print(result["translations"][0]["text"])
print(result["translations"][1]["text"])
実行結果は以下の通り。
ドラゴンクエスト#3は私のお気に入りのゲームです。
ドラゴンクエスト#5も大好きなゲームです。
もちろん、複数の文を空白や改行記号で結合すれば、一度に複数の文の翻訳を得ることができる。ただし、パラグラフごとのデータがあって、結合せずに翻訳結果を得たい場合などには、text
をリストにするやり方が都合がよい。