ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Python - PyAutoGUI:マウスやキーボードの自動化

初めに

 PyAutoGUIライブラリを用いて、マウスやキーボードの自動化ができます。本記事では、PyAutoGUIの基本的な使い方と使用例として、Youtubeを指定時間後に停止するコードを紹介します。

環境

fineworks-fine.hatenablog.com

 Pythonの開発環境に関してはこちらのリンク先をご覧ください。

PyAutoGUIのインストール

 TERMINALに次のコマンドを入力し、インストールします。

pip install pyautogui

マウスに関する基本的な操作

マウスの現在地の取得
import pyautogui

current_mouse_position = pyautogui.position()
print(current_mouse_position)
マウスを指定座標に移動させる
pyautogui.moveTo(100, 100, duration=1)  # (x, y)座標に1秒かけて移動

 画面の左上の座標が (0, 0) です。左に行くほど x 座標は増加し、下に行くほど y 座標が増加します。

 現在地を実行ボタンの位置で取得しておくと、下のコードのようにマウスを動かした後に、実行ボタンの位置に戻ってくることも可能です。

import pyautogui

current_mouse_position = pyautogui.position()
print(current_mouse_position)

pyautogui.moveTo(100, 100, duration=2)  # (x, y)座標に2秒かけて移動
print(pyautogui.position())

pyautogui.moveTo(100, 600, duration=2)  # (x, y)座標に2秒かけて移動
print(pyautogui.position())

pyautogui.moveTo(1241, 600, duration=2)  # (x, y)座標に2秒かけて移動
print(pyautogui.position())

pyautogui.moveTo(current_mouse_position, duration=2)  # (x, y)座標に2秒かけて移動
print(pyautogui.position())

youtu.be

クリック・ダブルクリック
import pyautogui

moveToX = 100
moveToY = 100

# 左クリック
pyautogui.click(x=moveToX, y=moveToY)

# 右クリック
pyautogui.rightClick(x=moveToX, y=moveToY)

# 中クリック
pyautogui.middleClick(x=moveToX, y=moveToY)

# ダブルクリック
pyautogui.doubleClick(x=moveToX, y=moveToY)

キーボードの基本操作

pyautogui.typewrite("Hello, PyAutoGUI!")
import pyautogui

pyautogui.click(400, 300)  # (x, y)座標でクリック

pyautogui.typewrite("Hello, PyAutoGUI!")    # キーボードの入力

youtu.be

スクリーンショット

screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')

使用例:再生中のYouTubeを指定時間後に停止する

import pyautogui
import time

# 待ち時間(分)を定義
wait_minutes = 0.1

# 指定した時間待つ
time.sleep(wait_minutes * 60)

# メインの処理
if __name__ == '__main__':
    youtube_window = pyautogui.getWindowsWithTitle('YouTube')
    if youtube_window:
        youtube_window[0].activate()    # YouTubeを開いているウィンドウをアクティブにする
        pyautogui.press('space')    # スペースキーを押す

 youtube_window = pyautogui.getWindowsWithTitle('YouTube')Youtubeが開いているウィンドウを取得します。もし、Youtubeを開いているウィンドウがあれば、そのウィンドウをアクティブにし、スペースキーを押す処理をします。

 動画再生中であれば動画が停止されます。動画停止中であれば動画が再生されます。

 寝ながら動画を見る場合に、動画を自動で停止してくれます。