Files
turf_saas/fetch_results.py
2026-04-25 17:18:43 +02:00

100 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""
Récupération des résultats des courses 1h après la course
"""
import sqlite3
import subprocess
import schedule
import time
import logging
from datetime import datetime, timedelta
DB_PATH = "/home/h3r7/turf_scraper/turf.db"
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def get_db():
conn = sqlite3.connect(DB_PATH)
conn.row_factory = sqlite3.Row
return conn
def should_fetch_results():
"""Vérifie s'il est temps de récupérer les résultats (1h après la dernière course)"""
conn = get_db()
today = datetime.now().strftime('%Y-%m-%d')
c = conn.execute("""
SELECT DISTINCT race_time
FROM predictions
WHERE date=? AND source='canalturf_partants'
ORDER BY race_time DESC
LIMIT 1
""", (today,))
last_race = c.fetchone()
conn.close()
if not last_race or not last_race['race_time']:
return True
try:
race_hour = int(last_race['race_time'].split(':')[0])
race_min = int(last_race['race_time'].split(':')[1])
now = datetime.now()
race_datetime = now.replace(hour=race_hour, minute=race_min, second=0)
if (now - race_datetime).total_seconds() < 3600:
return False
return True
except:
return True
def fetch_and_save_results():
"""Récupère les résultats via pmu_results.py"""
logger.info("=== Récupération des résultats PMU ===")
if not should_fetch_results():
logger.info("Pas encore 1h après les courses")
return
try:
result = subprocess.run(
['python3', '/home/h3r7/turf_scraper/pmu_results.py'],
capture_output=True,
text=True,
timeout=60,
cwd='/home/h3r7/turf_scraper'
)
if result.returncode == 0:
logger.info("✅ Résultats récupérés avec succès")
else:
logger.error(f"❌ Erreur: {result.stderr}")
except Exception as e:
logger.error(f"❌ Exception: {e}")
logger.info("=== Fin récupération résultats ===")
def run_result_fetch():
"""Point d'entrée pour le scheduler"""
fetch_and_save_results()
def start_scheduler():
"""Démarre le scheduler pour récupération automatique"""
logger.info("Démarrage scheduler résultats...")
schedule.every().hour.do(run_result_fetch)
while True:
schedule.run_pending()
time.sleep(60)
if __name__ == '__main__':
import sys
if len(sys.argv) > 1 and sys.argv[1] == '--once':
fetch_and_save_results()
else:
start_scheduler()