#!/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()