【Mac】コピーした文章を翻訳してポップアップしてくれるスクリプト
英語の勉強のため英論文を読むが、何よりもテンポ感が大切。
時にはGoogle翻訳様に頼ることで、睡魔に打ち勝つ。
その際、いちいちコピペするよりは、コピーのみで翻訳結果をポップアップ表示してくれたら便利。
ということで作ってみました。
(動作するアプリを選べるようにしたので、関係ないアプリでポップアップが出てイライラすることもない←地味に大切)
こんな感じの動き
↓↓↓↓↓↓↓↓↓↓↓↓↓[Cmd+c]↓↓↓↓↓↓↓↓↓↓↓↓↓
やった!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
手元の環境
- macOS Catalina 10.15.1
- Python 3.7.4
必要なパケ
pip install pyperclip
pip install googletrans
実装
import os
import time
import pyperclip
from googletrans import Translator
from AppKit import NSWorkspace
# アクティブウィンドウ取得用
workspace=NSWorkspace.sharedWorkspace()
log, sentence = None, None
while True:
# クリップボードが更新されると抜ける
while sentence is None or sentence == log:
time.sleep(0.1)
# クリップボード取得
sentence = pyperclip.paste()
# 放置するとNoneになるので回避
if sentence is None:
continue
# 初期起動時にはポップアップしない
if log is None:
log = sentence
continue
# ちょっとした整形 (不要なら消してもいい。)
sentence = sentence.replace("\n"," ")
sentence = sentence.replace("- ","")
log = sentence
# アクティブウィンドウを取得+フィルタ
appname=workspace.activeApplication()["NSApplicationName"]
if appname not in ["プレビュー"]:
continue
# google翻訳
translated = Translator().translate(sentence,src = "en" ,dest = "ja").text
# 翻訳結果をアラート表示
os.system("osascript -e 'display dialog \"{}\"'".format(translated))
実行
基本動かしっぱなし。
python3 translator.py
ちょっとした解説
pyperclip
クリップボードを取得できます。
import pyperclip
sentence = pyperclip.paste()
googletrans
google翻訳のAPIを叩いてくれるパッケージ。
srcに元の言語、destに翻訳先の言語を入れれば、英和訳以外にも使えます。
from googletrans import Translator
translated = Translator().translate(sentence,src = "en" ,dest = "ja").text
AppKit NSWorkspace
現在のアクティブウィンドウ名を取得できます。
これで翻訳を動作させるアプリを選択。
プレビュー以外で動作させたい場合は、とりあえずappname
を表示してみるべし。
from AppKit import NSWorkspace
workspace=NSWorkspace.sharedWorkspace()
# アクティブウィンドウを取得+フィルタ
appname=workspace.activeApplication()["NSApplicationName"]
# アクティブウィンドウ取得用
if appname not in ["プレビュー"]:
continue
クリップボード監視
キー入力監視まですればベターかもしれないけれど、とりあえず0.1秒ごとにクリップボードを監視する形で乗り切った。
(バックグラウンドで動くキー監視用のpython3パッケージあったら教えてください。。。)
#クリップボードが更新されると抜ける
# クリップボードが更新されると抜ける
while sentence is None or sentence == log:
time.sleep(0.1)
# クリップボード取得
sentence = pyperclip.paste()
# 放置するとNoneになるので回避
if sentence is None:
continue
# ちょっとした整形 (不要なら消してもいい。)
sentence = sentence.replace("\n"," ")
sentence = sentence.replace("- ","")
log = sentence
ポップアップ通知
色々試した結果、AppleScript
経由に落ち着いた。
os.systemを使って、コマンドラインに投げるとポップアップしてくれます。
いと便利あはれたてまつる。
os.system("osascript -e 'display dialog \"{}\"'".format(translated))
最後に
超便利。。。
人としてどんどんダメになっていく気がする。。。
Author And Source
この問題について(【Mac】コピーした文章を翻訳してポップアップしてくれるスクリプト), 我々は、より多くの情報をここで見つけました https://qiita.com/NLPingu/items/733eec31c3c9572a0811著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .