備忘録

ソフトウェアエンジニアのメモ帳

定期実行するための作業メモ

目的

ログインボーナスを自動で取得したい!

以前は Heroku の無料枠を利用していたが、

自宅の mac で定期実行してみることにした。

環境

MacBook Air M1, 2020

16GB

macOS 13.2.1

作る人は Python を全く使えない素人

やったこと

1. ソースコードの修正

Heroku で動いてたソースコードがあるので、その修正が必要だった。
修正する箇所はchromeドライバの取得方法の変更。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 自動でchrome-driverをアップデートしてくれるライブラリ
# conda環境であれば、conda install webdriver-manager でインストールが必要。
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
# m1 mac に numpy が入らない→ conda で仮想環境作って numpy を入れる。
import numpy as np
import time

# 1.000~3.000秒のランダムな乱数を生成する
wait_time = float('{:.3f}'.format(np.random.rand()*3+1))

## Chrome を自動でアップデートするために ChromeDriverManager を利用する
driver_path = ChromeDriverManager().install()

## 画面を表示しないようにするために headless を指定する
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(service=Service(executable_path=driver_path), options=options)

try:    
    time.sleep(wait_time*10)
    driver.get('https://login.url') # ログインURL
    time.sleep(wait_time)

    driver.close()
    driver.quit()

except:
    driver.close()
    driver.quit()
2. cron の設定

ターミナルから

crontab -e

深夜に動かしたいので、macのスリープを解除しつつ動かす設定をこんな感じで登録。
anaconda で python39 の環境を作っているので、そこの python コマンドのフルパスを指定しておくと、 conda activate python39 投入の代わりになってくれる。

0 1 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job1.py
1 1 * * * pmset repeat wakeorpoweron MTWRFSU 01:59:00
0 2 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job2.py
1 2 * * * pmset repeat wakeorpoweron MTWRFSU 02:59:00
0 3 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job3.py
1 3 * * * pmset repeat wakeorpoweron MTWRFSU 00:59:00