使い方
セットアップ
1. リポジトリをクローン
bash
git clone git@github.com:otani-devops/HorseRacingDataChecker.git
cd HorseRacingDataChecker2. Python仮想環境を作成
bash
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt3. 環境変数を設定
bash
cp .env.example .env.env を編集し、Slack Webhook URLを設定(Slack通知を使う場合):
bash
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../xxx基本的な使い方
当日の全レースを監視
bash
.venv/bin/python3 main.py起動すると以下の流れで動作します:
- 当日のJRAレーススケジュールを自動取得
- 各レースの出馬表(馬名・騎手名)を取得
- 60秒間隔でオッズをポーリング
- 変動をターミナルにリアルタイム表示
- 閾値超過時にSlack通知
特定レースのみ監視
bash
# レースIDを指定(スペース区切りで複数可)
.venv/bin/python3 main.py --race-id 202609010711 202606020511ポーリング間隔を変更
bash
# 30秒間隔で監視
.venv/bin/python3 main.py --interval 30Slack通知なしで実行
bash
.venv/bin/python3 main.py --no-slack指定日のレースを監視
bash
.venv/bin/python3 main.py --date 20260315Slack通知のテスト
bash
.venv/bin/python3 main.py --test-slack表示の見方
ターミナル出力
全レース 急変動ランキング TOP20
┏━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━━━━┓
┃ レース ┃ 馬番 ┃ 馬名 ┃ 前回 ┃ 今回 ┃ 変動% ┃ 方向 ┃
┡━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━━━━┩
│ 阪神1R │ 05 │ ○○○ │ 44.2 │ 33.7 │ -23.8% │ ↑ 急騰 │
│ 阪神1R │ 11 │ △△△ │180.3 │258.4 │ +43.3% │ ↓ 急落 │
└─────────┴──────┴────────┴──────┴──────┴────────┴────────┘| 表示 | 意味 | 色 |
|---|---|---|
| ↑ 急騰 | オッズ低下 = 買いが集中している | 緑 |
| ↓ 急落 | オッズ上昇 = 買いが引いている | 赤 |
| - | 大きな変動なし | グレー |
| 太字 | Slack通知閾値を超えた変動 | 太字 |
閾値の設定
| 閾値 | デフォルト | 用途 |
|---|---|---|
DISPLAY_THRESHOLD_PCT | 5% | この%以上の変動をターミナルに表示 |
ALERT_THRESHOLD_PCT | 20% | この%以上の変動でSlack通知 |
停止方法
Ctrl+C でグレースフルに停止します。SQLiteの履歴データは保持されます。
個別モジュールのテスト
各スクレイパーモジュールは単体で実行可能です:
bash
# レーススケジュール取得テスト
.venv/bin/python3 -m scraper.race_calendar
# オッズ取得テスト (race_idを指定)
.venv/bin/python3 -m scraper.odds_fetcher 202609010711
# 出馬表取得テスト (race_idを指定)
.venv/bin/python3 -m scraper.horse_info 202609010711トラブルシューティング
| 症状 | 原因 | 対応 |
|---|---|---|
| レースが0件と表示 | 非開催日 | 土日のJRA開催日に実行する |
| オッズ取得エラー | レース締切済み or race_idが不正 | --race-id で正しいIDを指定 |
| Slack通知が届かない | Webhook URLが未設定 | .env の SLACK_WEBHOOK_URL を設定 |
| IP制限 | 過度なアクセス | REQUEST_DELAY を大きくする (2.0秒等) |