睡眠とパソコン

だいたい毎日更新するのでだいたい毎日来てください

【Python】クリップボードを監視してファイルに書き出すプログラムを作った

背景

たくさんの論文を流し読みして、自分の論文に使えそうな箇所をコピペする作業をしている。使えそうな記述をコピーし、メモファイルにペーストする、という作業である。
しかし、コピーした後にいちいちメモファイルにマウスカーソルを移動してペーストするのが面倒だったので、コピーするだけでファイルに自動的に書き込まれるプログラムを作った。

環境

  • Windows 10 21H2 19044.2486
  • Python 3.9.5

コード

from time import sleep
import pyperclip

previous_text = pyperclip.paste()

while True:
  if pyperclip.paste() != previous_text:
    # クリップボードの値が更新されている場合
    copied_text = pyperclip.paste()
    previous_text = copied_text
    new_text = copied_text.replace("\r\n", "").replace("\n", "").replace(" ", "")
    print(new_text, "\n")

    with open('output.txt', 'a', encoding='utf-8') as f:
      f.write(new_text + "\n\n")

  sleep(0.5)


pyperclip(pip installが必要)のpaste()でクリップボードの文字列を参照し、前回の参照から変更されていればファイルに書き込む。

ちゃんとコピーできたかを確認したいので、ファイルに書き込む内容は標準出力にも出力するようにした。

また、あまり密なループをするとPCに負荷がかかるため、ループごとに0.5秒の間を開けている。

あと、PDFの論文をコピーすると途中に半角スペースが含まれるため、半角スペースも除去している。

使い方

このプログラムを起動した状態で論文を読み、良い箇所があったらコピーする。横目でチラッと標準出力を見て、再び論文に目を戻す。楽でうれしい。