0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

みんなの自動翻訳をシェルやvimで使ってみた

Last updated at Posted at 2022-08-29

みんなの自動翻訳

自動翻訳って楽で素敵ですよね。僕は今までDeepLを使っていました。
だけど、DeepLのAPIって有料な上に、ブラウザの有料プランと併用できないという苦しみがあるようでした。APIを使わせてくれないと、シェルとかvimとかから使いにくい。

そこで、みんなの自動翻訳というWebサービスがAPIとか使わせてくれるので使ってみました。ちなみに、このサービスはユーザー登録必須です。
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/

具体的にはどうするか

minhonコマンドを実装してみます。
例えば、下記のように動いて欲しかった。

> echo みんなの自動翻訳をシェルから使ってみたよ。| minhon
I tried using Minna no Machine Translation from Shell.

いい感じじゃないですか?これなら割とどんなソフトにも組み込めるんじゃ?
もしvimならvisualモードで:を押して

:'<,'>!minhon

とすると

みんなの自動翻訳をvimで使ってみるよ。

I'm going to use Minna's machine translation on vim.

って感じに翻訳してくれます。いい感じじゃないですか?

登録

単にユーザー登録するだけ。簡単。
そんで、APIの所にキーとかシークレットがあるので、コピペする。

コード

みんなの自動翻訳に書いてあるのをほぼ丸写ししたのです。
まぁ、適当です。pythonで書いていて、requests_oauthlibを使っています。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from requests import post
from requests_oauthlib import OAuth1
import json
import argparse

parser = argparse.ArgumentParser(description='Front end of minhon')
parser.add_argument('-j', '--japanese', action='store_true', help='To Japanese')
args = parser.parse_args()

text_list = []
while(True):
    try:
        res = input()
        text_list.append(res)
    except BaseException:
        break
text = '\n'.join(text_list)
if args.japanese:
    URL = 'https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_en_ja/'
else:
    URL = 'https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_ja_en/'


NAME = 'ID'
KEY = 'キー'
SECRET = 'シークレット'

consumer = OAuth1(KEY , SECRET)

params = {
    'key': KEY,
    'name': NAME,
    'type': 'json',
    'text': text
}

try:
    res = post(URL, data=params , auth=consumer)
    res.encoding = 'utf-8'
    print(json.loads(res.text)['resultset']['result']['text'])
except Exception as error:
    print('=== Error ===')
    print('type:' + str(type(error)))
    print('args:' + str(error.args))
    print('error:' + str(error))

おわり

現場からは以上です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?