経緯
RSSリーダー作ったのだが、英語サイトも購読している。
その際、英語だと視認性が悪いので、翻訳したいと考えて、翻訳のAPIがないか探したら、"みんなの自動翻訳"ってAPIが無料で使えるらしいので、使うことにした。
その際に使い方を調べたので、まとめておく。
環境
nodeからAPIを呼び出しているので、nodeのバージョンと利用しているモジュールのバージョンを記載
$ node -v v18.6.0
"axios": "^1.3.4", "axios-oauth-client": "^2.0.2", "dotenv": "^16.0.3",
axios:APIを呼び出すリクエスト生成のために利用 axios-oauth-client:Oauth認証のために利用 dotenv:APIキーなどの管理のために利用
dotenvについては、以下で調査したので、気が向いたら見て貰えればと
実装
まだAPIとして実装はせず、実験的に利用できるか調査するための実装をした。
require('dotenv').config(); var url = 'https://mt-auto-minhon-mlt.ucri.jgn-x.jp'; // 基底URL (https://xxx.jpまでを入力) var key = process.env.api_key; // API key var secret = process.env.api_secret; // API secret var name = process.env.login_id; // ログインID var api_name = 'mt'; // API名 (https://xxx.jp/api/mt/generalNT_ja_en/ の場合は、"mt") var api_param = 'generalNT_ja_en'; // API値 (https://xxx.jp/api/mt/generalNT_ja_en/ の場合は、"generalNT_ja_en") var axios = require('axios'); var oauth = require('axios-oauth-client'); const getClientCredentials = oauth.clientCredentials( axios.create(), url + '/oauth2/token.php', key, secret, ); async function test() { const auth = await getClientCredentials(); var params = { access_token: auth.access_token, key: key, // API Key api_name: api_name, api_param: api_param, name: name, // ログインID type: 'json', // レスポンスタイプ text: 'おはようございます', // 翻訳テキスト }; // クエリパラメータで渡さないと523エラーが返ってくる(´・ω・`) var searchParams = new URLSearchParams(); for (let key in params) { searchParams.append(key, params[key]); } const res = await axios.post(url + '/api/', searchParams); console.log(res.data.resultset.result.text); } test();
実行したら、以下の結果になった。
$ node index.js Good morning
簡単な文字列だから、当然
流れとしては、Oauth認証→翻訳リクエストの流れ。
よくあるAPI利用手順。
APIのリクエストレスポンスの形式は、公式サイトにサンプルソースと一緒に公開されているから、内容見て、必要な情報を抜き出せる。
感想
調査する前までは、DeepLかGoogle翻訳に行き着くんだろうなぁと思っていたが、全然認知してないAPIがあることに驚いた。
日本のITはダメとか言っている記事をよく見るけど、ちゃんと動くし、研究されていることに少し感動しましたわ。
あんまり、国立の研究機関の情報を注視したことがなかったので、今度から見るようにしたい。