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