英文を書くのが捗る?スクリプト




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 を利用しているので WindowsLinux の場合は変更が必要。最初は30語ぐらいで設定していたけど頻繁に出るほうが楽しいので10単語に変更した。len(par.text.split(" ")) の部分を len(par.text) にすれば文字数でカウントが可能。

要修正点

・document は使い終わったら閉じるのが行儀いいかもしれない
・60秒に一度ファイルを見に行っているけど、保存されたタイミングを監視すると効率がいいかもしれない。
・python-daemonを使おうとしたけどうまく動かなかった


これでゴリゴリ論文が書けるかもしれない…めでたしめでたし


コメント

このブログの人気の投稿

Excelで近似直線の傾きと切片を得る

塩基配列のデータを扱うときは専用エディタ ApE を使おう

Illustrator で稲妻マークを描く