後から振り返って、「あの時何をしていたのか」を知りたくなることはしばしばあります。例えば日々の作業を後から文書化したい場合があります。その様な時、定期的に取得されたスクリーンショットは役立ちます。このブログ記事では、Pythonを使用して定期的にスクリーンショットを撮影し、それらを保存する方法について説明します。
使うのは pyautogui というライブラリです。pyautoguiはキーボードやマウスの自動操作を可能にする強力なライブラリでスクリーンショットの撮影も可能です。この記事ではスクリーンショット機能のみを使いますが、スクリーンショットした画像をもとになんやかんやする、E2Eテストの自動化に使うなど、使用方法は多岐にわたります。
まずpyautoguiライブラリをインストールする必要があります。Pythonがインストールされていることを確認した上で以下のコマンドを実行します。
pip install pyautogui
次にスクリプトを作成します。以下のコードは、5分ごとにスクリーンショットを撮影し”screenshots”という名前のフォルダに日時込みで保存する例です。
import pyautogui import time import os if __name__ == '__main__': # スクリーンショットを保存するフォルダを作成 if not os.path.exists('screenshots'): os.makedirs('screenshots') while True: # 現在の時刻をファイル名に使用 filename = f'screenshots/screenshot_{time.strftime("%Y%m%d_%H%M%S")}.png' # スクリーンショットを撮影して保存 pyautogui.screenshot(filename) # 300秒=5分待機 time.sleep(300)
大変シンプルな形にできあがります。 このスクリプトは無限ループを用いてスクリプトを停止するまで定期的にスクリーンショットを撮り続けます。またスクリーンショットの間隔や保存先はスクリプトを編集することで自由に変更できます。 これを実行すると指定した間隔で自動的にスクリーンショットが撮影され指定したフォルダに保存されます。