Initial commit: existing turf_saas codebase
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
99
fetch_results.py
Normal file
99
fetch_results.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user