英文を書くのが捗る?スクリプト
Wordファイルの単語数を監視して通知を表示するスクリプトを作った話
論文を書いてるとあまり捗らないので、脳に報酬を与えようという目論見。
pythonプログラムは以下の通り
import sys
import docx
import subprocess
import time
def monitor():
target_file = sys.argv[1]
document = docx.Document(target_file)
prev_words = 0
for par in document.paragraphs:
prev_words += len(par.text.split(" "))
while True:
document = docx.Document(target_file)
curr_words = 0
for par in document.paragraphs:
curr_words += len(par.text.split(" "))
if curr_words >= prev_words + 10:
subprocess.call("osascript -e \'display notification \"現在の単語数は " + str(curr_words) + " 単語\" with title \"その調子!\"\'", shell=True)
prev_words = curr_words
time.sleep(60)
monitor()
実行するときは…
python3 monitor_word.py ファイル名 & でバックグラウンド実行される(最後に&をつけるのがポイント)停止するときは ps でプロセスIDを調べて kill -kill PID
中身の説明
python-docx モジュールで対象の Word ファイルを読み込んで各段落の単語数の総和を求めている。前のカウントから10単語以上増加すると通知が出てくる。通知には Applescript を利用しているので Windows や Linux の場合は変更が必要。最初は30語ぐらいで設定していたけど頻繁に出るほうが楽しいので10単語に変更した。len(par.text.split(" ")) の部分を len(par.text) にすれば文字数でカウントが可能。要修正点
・document は使い終わったら閉じるのが行儀いいかもしれない・60秒に一度ファイルを見に行っているけど、保存されたタイミングを監視すると効率がいいかもしれない。
・python-daemonを使おうとしたけどうまく動かなかった
これでゴリゴリ論文が書けるかもしれない…めでたしめでたし
コメント
コメントを投稿