DeepL APIの試用

APIを試してみたのでメモ。

import 'dotenv/config'

const API_KEY = process.env.DEEPL_API_KEY;
const API_DOMAIN = process.env.DEEPL_API_DOMAIN;
if (API_KEY == null || API_DOMAIN == null) {
  throw new Error();
}

const API_ENDPOINT = `https://${API_DOMAIN}/v2/translate`;

type TranslationLang = 'JA' | 'EN';

async function main() {
  const text = '翻訳したい言葉をここに書く。';
  await translate(text, 'JA', 'EN');
}

type TranslationResponse = {
  translations: { detected_source_language: TranslationLang, text: string }[]
}

async function translate(
  text: string, sourceLang: TranslationLang, targetLang: TranslationLang
): Promise<void> {

  const body = new FormData();
  body.append('text', text);
  body.append('target_lang', targetLang);
  body.append('source_lang', sourceLang);

  const res = await fetch(API_ENDPOINT, {
    method: 'POST',
    headers: {
      Authorization: `DeepL-Auth-Key ${API_KEY}`
    },
    body,
  });
  if (!res.ok) {
    throw new Error();
  }

  const { translations } = await res.json() as TranslationResponse
  const textList = translations.map(({text}) => text);
  console.log(textList)
}

ただ個人アカウントだと、DeepL API Proを契約すると、DeepL Proが契約できなくなるっぽくてちょっと困っている。