こんにちは!予約開始時間に待機しているのになかなか予約が取れない!ということはありませんか?
今回、母親から依頼があり、Pythonでの自動化に挑戦してみました。
プログラミング用言語のPythonがPCにインストールされていない場合は、公式サイトからインストールしてください。今回は3.11.4バージョンのPythonを使用しました。 https://www.python.org/downloads/
今回はSchedule、PyAutoGUI ライブラリを利用しています。
検索欄にcmdと入力しコマンドプロントを開き、下記を入力してインストールを済ませておきましょう。
- pip install schedule
- pip install pyautogui
もしうまくインストールできないようなら、PythonがPCにきちんとインストールされていない場合があります。
Pythonに興味がある、自動化したい!予約が取れない!という方は是非見てみてください!
SPA HERBS 美楽温泉とは?
SPA HERBS公式ホームページ:https://spa-herbs.jp/
SPA HERBSは埼玉最大級の新感覚スパリゾートになります。
温泉だけでなくフィットネスクラブも併設されており、ヨガなどのスポーツが楽しめます。
テレビで取材を受けることも多く、埼玉県民に大人気の銭湯です!観光地と言ってもいいですね!
母親の困りごと
私の母はこちらのSPA HERBSのフィットネスクラブの会員になっています。こちらは月額料金なので、レッスンを受ければ受けるだけ得ですよね。
なのですが、困りごとがあるそうです。
フィットネスの予約は1週間前の12:00に受付可能になるのですが、すぐ満員になってしまって、12:00に待機していても予約が取れないそうなのです。5秒後には予約が満員になってしまう現状です。私も頑張っても予約が取れませんでした。
キャパ少なっ!
なので、今回はプログラムを利用して、誰よりも早く予約を取得してしまおう!という記事になります。
作ったプログラム
実際に作ったプログラムがこちらです。
import pyautogui
import schedule
from time import sleep
import keyboard
### 画面ズームが33%になっていることを確認
### SPA HERBSの画面を全画面表示して、下へスクロールしていることを確認
### F5を押して開始
### 予約が取れた\らカーソルを左上に持っていく
### CTRL + Cで強制終了
### print(pyautogui.position())
def task():
print("12時になったカメ!ページを開きなおすカメ")
pyautogui.click(956, 158)
pyautogui.hotkey('f5')
sleep(0.5)
while True :
pyautogui.click(1054, 360)
if keyboard.is_pressed("a"):
print("動作を終了しましたカメ")
break
sleep(0.5)
pyautogui.click(978,507)
if keyboard.is_pressed("a"):
print("動作を終了しましたカメ")
break
sleep(0.1)
while True :
schedule.every().day.at("12:00").do(task)
schedule.run_pending()
sleep(0.1)
print("まだ12時じゃないカメ")
こちらが今回実際に作ったPythonのコードになります。
大きくプログラムの持っている機能を分けると、
- 12:00を判断する機能
- ページを再読み込みする機能
- 予約ボタンの位置をクリックする機能
の3つになります。
12:00を判断するプログラム
import schedule
from time import sleep
while True :
schedule.every().day.at("12:00").do(task)
schedule.run_pending()
sleep(0.1)
print("まだ12時じゃないカメ")
12:00を判断するプログラムはこちらになります。
scheduleライブラリをインポートして使用しています。
12:00に達しているかどうかを0.1秒ずつ確認していって、12:00になるまで「まだ12時じゃないカメ」をログに表示させて、12:00になったらtask関数を呼ぶようになっています。
ページを再読み込みするプログラム
import pyautogui
from time import sleep
import keyboard
def task():
print("12時になったカメ!ページを開きなおすカメ")
pyautogui.click(956, 158)
pyautogui.hotkey('f5')
sleep(0.1)
SPA HERBSでは、12:00分にページを再読み込みすることで予約ボタンが出るようになっています。再右端上のやさしいフローロガが大人気で取れないそうなんです・・。
まだ席に余りがある場合は右下のように予約ボタンがオレンジ色になっていますが、やさしいフローヨガはグレーアウトして、満員と出てしまっています。こうなってしまうともうレッスンは受けられません😢
なので、12:00を判断すると、関数「task」でまず「12時になったカメ!ページを開きなおすカメ」と表示され、
SPA HERBSの予約ページをクリックして最前面に来るようにしてから、"f5″を入力してページを再読み込みするようになっています。
キーのクリックや入力にはPyAutoGUIを使用しています!
予約ボタンの位置をクリックする機能
ページの再読み込みをした関数「task」の続きです。
sleep(0.1)
while True :
pyautogui.click(1054, 360)
if keyboard.is_pressed("a"):
print("動作を終了しましたカメ")
break
sleep(0.5)
pyautogui.click(978,507)
if keyboard.is_pressed("a"):
print("動作を終了しましたカメ")
break
sleep(0.1)
「予約」ボタンの座標を読み込んであるので、ひたすらクリックし続けるプログラムになっています。こちらもPyAutoGUIでクリックを行っています!
print(pyautogui.position())
こちらのコードをPython開発環境に入れてテストで動作させると、座標が(x=1051, y=218)のように表示されるので、座標点はこちらで確認をしていきます。
プログラムにPCの操作をさせたい時はPyAutoGUIを使用しよう!
止めるまでずっと動作する無限ループになっています。
無限ループって怖くね?
キーボードで"a"を入力するとプログラムが終了する…ようにしたかったのですが、うまく動かなかったので、
PyAutoGUIの仕様である"カーソルを左上に持っていくとプログラムが終了する“ことを利用して、カーソルを左上に持ってくるとプログラムが止まるようになっています。無理やりですね(笑)
これで誰よりも早くSPA HERBSの予約を取ることができますね!
2023/6/30 実際に動かしてみた!
実際に動かしてみました!!記録は…12:00:03で予約が取れました!!
人力ではできない速度で予約の取得に成功です!!
大成功だね!
まとめ
今回はPythonを利用して、SPA HERBSのレッスン予約のプログラムを書いたことを記事にさせていただきましたが、いかがだったでしょうか。
私はPythonやVBAを業務で利用した経験があるため、プログラミングは少しできます。今回と似たようなプログラムなら簡単に組めますので、気軽に相談してください!
場合によっては、プログラム作成を承ることもしようかなと思っています。(料金はその際に相談させてください!)
今後は何もかも自動化の時代です。プログラミングを学んで、時代の波に巻き込まれないようにしたいですね!
かめこの案内所では、AIにまつわる話題なども取り上げていきたいと思いますので、応援よろしくお願いします!AIが人間の脳を超えてしまうシンギュラリティ(技術的特異点)にも興味があります。
記事を読んで分からない点などありましたら、私のTwitterまでよろしくお願いします。
記事を読んでいただき、ありがとうございました。