googletransでプロキシ設定


こんなエラーに悩んでいませんか?

httpcore._exceptions.ConnectError: [Errno 0] Error

たぶんこのページで解決できます.知らんけど.
結論から申し上げますと,翻訳APIのインスタンス化の際に以下のようにプロキシオプションを付与するだけで解決できます.

translator = Translator(proxies={"ホスト名":ポート番号})

社内ネットワークってめんどくさいですよね

というわけでこんにちは.
業務の関係上,英文メールをよく作成するのですが,英語よわよわ星の出身なので苦労することがよくあります.
楽にサクッと作成したいときは自動翻訳使えると便利だなーということで,自動化ツールを作成したのですが,その際社内ネットワークのプロキシ設定が回避できず,ドツボにハマったのでその覚書です.
サーバーまわりやネットワークまわりはド素人なので,有識者のコメントをお待ちしております.
作った自動化ツールについてはまた気が向いたときにでも.

環境とか必要パッケージ

-Windows10
-python3.8
-VScode1.47
-何らかの社内ネットワーク

たぶんパッケージはgoogletransのみで大丈夫なはず.
pip install googletransでインストール.
下のサンプルコードを回す場合はpip install pyperclipしておきましょう.
クリップボードをpythonから扱えるようになります.

社内ネットワークの情報を調べる

プロキシ設定が有効の時にこちらにアクセスすると,自動で解析してくれます.
REMOTE_ADDRの部分のipアドレスを控えておいてください.
ここでは気の利いた例が思いつかないので 123.456.789.012だったとしましょうか.

もしここで上のリンクを踏んでも社内サービスなどでブロックされてしまった方は,おとなしくシステムを管理している部署に問い合わせてください.僕には他の方法がわかりません.

サンプルコード

これで必要な準備は完了です.以下のコードはクリップボードをの文字列を取得して翻訳するスクリプトなので,①コピペして,②123.456.789.012という頭の悪そうな部分だけ書き換えて,③適当な日本語をクリップボードにコピーして実行してみてください.

なお,その直後の80はプロキシのポート番号です.環境によって異なりますが,よく使われるのは80,8080,1080,3128あたりらしいです.よく知りません.
windowsの方で,すでに有効化している場合は本体設定の「プロキシの設定を変更する」から既存値を確認できます.

translate.py
import pyperclip
from googletrans import Translator

text = str(pyperclip.paste())  #クリップボードから文字を取得
print('原文',text)

translator = Translator(proxies={"123.456.789.012":80})  #ここを書き換えてね.

text = translator.translate(text, dest = 'ja').text   # 翻訳
print('翻訳',text)

ちなみに,googletransを利用したコードをいくつか見ましたが,大抵が
translator = Translator()と書いてますよね.インスタンス化とゆーやつ.
そこにproxies={"123.456.789.012":80}を入れるだけで,それ以降に変更を入れる必要は特にありません.公式リファレンスはこちら

コメントお待ちしております!よき翻訳ライフを.