【クイズ】コピペを便利に(Windows専用)
最近、問読みの準備をしていて、固有名詞の読みやスペルを調べる機会が多くなりました。この時の作業は
Webで検索
記事からコピー
原稿にペースト
なのですが、「ペーストの時には【】で囲いたい」「英数字、記号を半角に揃えたい」などの欲望が出てきたので、実現するプログラムを作ってみました
ソースコード(ClipBoardNormalizer.py)
> python ClipBoardNormalizer.py
で実行する
import json
import pyperclip
import keyboard
import time
def normalize_name(text, dictionary):
for translate_item in dictionary["name_normalization"]["translate"]:
text = text.translate(
str.maketrans(translate_item["from"], translate_item["to"])
)
return text
with open("normalize.json", "r", encoding="utf-8") as f:
config = json.load(f)
shortcut_key = config["shortcut_key"]
print(f"ショートカットキー: {shortcut_key}")
is_shortcut_pressed = False
while True:
time.sleep(0.01)
if keyboard.is_pressed(shortcut_key) and not is_shortcut_pressed:
is_shortcut_pressed = True
clipboard_text = pyperclip.paste()
if len(clipboard_text) == 0:
continue
print(f"変換前: {clipboard_text}")
for translate_item in config["text_normalization"]["translate"]:
clipboard_text = clipboard_text.translate(
str.maketrans(translate_item["from"], translate_item["to"])
)
clipboard_text = f'【{clipboard_text}】'
print(f"変換後: {clipboard_text}")
pyperclip.copy(clipboard_text)
elif not keyboard.is_pressed(shortcut_key):
is_shortcut_pressed = False
設定ファイル(normalize.json)
ソースコードと同じ場所に配置する
"shortcut_key"に指定したいショートカットキーを指定する
"translate"に「変換前文字(from)→変換後文字(to)」の変換規則を記載する
{
"shortcut_key": "ctrl+alt+d",
"text_normalization": {
"translate": [
{
"from": " ",
"to": " "
},
{
"from": "0123456789",
"to": "0123456789"
},
{
"from": "abcdefghijklmnopqrstuvwxyz",
"to": "abcdefghijklmnopqrstuvwxyz"
},
{
"from": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"to": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
},
{
"from": "!"#$%&'()*+,-./:;<=>?@[¥]^_`{|}~",
"to": "!\"#$%&'()*+,-./:;<=>?@[¥]^_`{|}~"
}
]
}
}
上の例では、「Ctrl+C」でテキストをコピー後、「Ctrl+Alt+D」を押すと、クリップボード内のテキストが下記のように変換されます
「ABCdef123」→「【ABCdef123】」
この後に「Ctrl+V」すれば貼り付けできます
注意事項
本プログラムの動作はキーロガーそのものなので、使用は自己責任でお願いします
実行ファイル(64bit版Windows専用)
上記のpythonソースコードをpyinstallerで実行ファイル化したものです
完全無保証です
課題、今後の改善点
1キーで「変換+貼り付け」を一気にできるようにしたい