Pythonを使用した競馬キャンセル席獲得自動化プログラム

自動化

昨今なかなか手動でキャンセル席が取れないのではないでしょうか。この問題を解決すべくPythonを用いた自動化プログラムを作成しました。

これを用いることで、一切手を動かさずにキャンセル席を取る事が可能になります。また席の仮押さえが成功した場合LINEに通知が来るので、PC画面を見ず他の事に時間を割くことができ、今までの苦労が解消されます。

導入方法に関しては、別途記事【自動化導入手順①~⑥】で解説しているので、そちらをご覧ください。

注意!:導入を開始する前に

以下の画像のように入力し、コマンドプロンプトを起動してください。

以下の画像で白線が引かれている箇所に日本語が含まれている場合プログラムが動作しません。ここに表示されるのはアカウント名なので、該当者は新たに日本語が含まれないアカウントを作成して下さい。

 実績

  • 10/30東京競馬場開催満席→空席表示になった際6連続座席獲得成功
  • 10/31天皇賞(秋)座席獲得成功

作成したプログラムを載せておきます。今回対応しているのは東京競馬場、阪神競馬場、中山競馬場で、席はスマートシートが取れるようになっています。

使用されているPCがレッツノート SZ6 (Let’s note CF-SZ6) で推奨解像度(1920×1200)設定、Google Chromeで動作の場合のみ、プログラム内の座標を変えずに使用する事が可能。ディスプレイが12.1インチなので、同じ大きさのPCも使用可能かもしれません。

smartseat.png
keibatime.png

↑画像認識用に使用している画像ファイル(使用するPCの解像度、画面の大きさで細かい部分が変わると思うので、同じ部分を自分用に撮り直す必要があります)

#競馬キャンセル席自動取得プログラム。#を頭につけるとメモ書きとなりプログラム実行部分ではなくなる。
import pyautogui as pg #コマンドプロンプトでpip install pyautoguiと入力しインストールする必要あり
import time
import requests#pip install requests
for i in range(50000):#カッコ内の数だけfor文の中(列が下げられている所)が実行される。50000回で50時間くらい
    pg.click(x=901,y=855,button='left',interval=0.01)#注意事項を確認しましたボタン
    pg.click(x=901,y=881,button='left',interval=0.01)#次へ進むボタン
    pg.click(x=1030,y=459,button='left',interval=0.01)#おまかせ席展開ボタン
    if pg.locateOnScreen(r"C:\Users\k17pl\autokeiba\smartseat.png" , confidence=0.98):
        #記載のフォルダ内にsmartseat.pngを保存必須
        #↑画面上にsmartseat.pngと同じ部分があるか探す。
        #あれば字下げされている所を実行。なければifと同じ列のelse部分を実行
        x,y = pg.locateCenterOnScreen(r"C:\Users\k17pl\autokeiba\smartseat.png" , confidence=0.98)
        #↑smartseat.pngと同じ部分の真ん中の座標を読み取る
        pg.click(x+280,y-5,interval=0.01)#モニター上の座標(x+280,y-5)を指定して、そこに移動(座席選択ボタン)
        #実験用pg.click(x=1030,y=1100,button='left',interval=0.1)#車いす席取得用ボタン
        pg.click(x=1058,y=258,button='left',interval=0.2)#選択した席を検討に追加ボタン
        #pg.click(x=1152,y=500,button='left',interval=0.01)#1から2人に(展開ボタン)(2人用)
        #pg.click(x=1152,y=520,button='left',interval=0.01)#1→2人にするボタン(2人用)
        pg.click(x=1129,y=535,button='left',interval=0.01)#仮押さえ確定ボタン
        time.sleep(1)#1秒間プログラム動作停止.
        if pg.locateOnScreen(r"C:\Users\k17pl\autokeiba\keibatime.png" , confidence=0.985):
            break#for文内のプログラム動作を終了する
        else:#同じ列のif文が正しくなければここを実行
            pg.press('f5')#f5キー押す
            time.sleep(1.5)#1.5秒間停止
            continue#プログラムまた最初から
    else:#同じ列のif文が正しくなければここを実行。満席ならまたf5でリロードしてプログラム最初から
        pg.press('f5')#f5キー押す
        time.sleep(1.5)#1.5秒間停止
        continue#プログラムまた最初から
#ここより下はライン通知用プログラム。
# 発行されたトークン
ACCESS_TOKEN = "WA3aPzxtJL4G08pdJSYAm4ypRrgeO5UzzwczUwVUmcldg"#line notifyで取得したtokenを""内に入れる
headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}#変えなくていい
data = {"message": "\nやったね\n競馬のキャンセル席が取れたよ!"}#""内を好きな言葉にしてOK。\nは改行の意味
requests.post("https://notify-api.line.me/api/notify", headers=headers, data=data)#変えなくていい
#---以下このプログラムを使うためにやる事---
#1.pythonをインストール
#2.コマンドプロンプト内、pip installでpyautogui, requests, pillow, opencv_python,pyscreeze, Imageをインストールする必要あり。
#3.個人フォルダの中の同じフォルダ内 [私の場合Usersフォルダの中のk17plフォルダ
    # {ここがユーザー名で、日本語の場合プログラムが正しく動作しない為、日本語が含まれていないか確認する必要がある。}
    # の中のautokeibaフォルダ内(\Users\k17pl\autokeiba\ここ)
    #にプログラムコードと画像認識用画像データ(拡張子は.png)を保存している]
#4.Visual Studio Codeというソフトをインストールしてプログラムをコピペする。言語がちゃんとpythonになっているか注意
#5.プログラム内のpg.click内のx,y座標を変更する必要あり。因みにpyautogui.position()でマウスの座標がでる
#6.pg.locateOnScreen内のconfidenceの値を調整する必要あり。
    #0~1まで値を調節できる。1に近づくにつれて一致しているという意味。私の場合0.5では高い席が読み込まれてしまった。
    #その為、0.98にしている。ここの値は使用PCによって値が異なると予想される為、調整が必要。
#8.line notifyでトークンを発行し、プログラム内の指定の場所に貼り付ける
#8.あとはコマンドプロンプトで私の場合autokeibaフォルダ内(cd autokeibaでautokeibaフォルダに飛べる.)
    #でpython keiba.py(プログラムファイル名)を実行すればプログラムが動く
#9.あとは放置!PCのスリープ設定を忘れずに!PCを閉じても動くように設定する事ができるので有効活用推奨。

コメント

タイトルとURLをコピーしました