75 lines
2.5 KiB
Python
Executable File
75 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import sqlite3
|
|
import json
|
|
from datetime import datetime
|
|
from flask import Flask, jsonify
|
|
|
|
app = Flask(__name__)
|
|
|
|
def get_db():
|
|
return sqlite3.connect('/home/h3r7/turf_scraper/turf.db')
|
|
|
|
def dict_factory(cursor, row):
|
|
d = {}
|
|
for idx, col in enumerate(cursor.description):
|
|
d[col[0]] = row[idx]
|
|
return d
|
|
|
|
@app.route('/api/vitesse')
|
|
def api_vitesse():
|
|
try:
|
|
conn = get_db()
|
|
conn.row_factory = dict_factory
|
|
today = datetime.now().strftime('%Y-%m-%d')
|
|
|
|
predictions = {}
|
|
for category in ['bases', 'chances', 'outsiders']:
|
|
c = conn.execute(f"""
|
|
SELECT horse_name, horse_number
|
|
FROM predictions
|
|
WHERE date=? AND source=?
|
|
GROUP BY horse_name
|
|
ORDER BY MIN(prediction_rank)
|
|
""", (today, f'canalturf_prono_{category}'))
|
|
predictions[category] = []
|
|
for row in c:
|
|
predictions[category].append({
|
|
'horse_name': row[0],
|
|
'horse_number': row[1]
|
|
})
|
|
|
|
for category, horses in predictions.items():
|
|
for horse in horses:
|
|
horse_name = horse['horse_name']
|
|
|
|
c = conn.execute("""
|
|
SELECT AVG(temps_obtenu) as avg_time, COUNT(*) as races
|
|
FROM historical_data
|
|
WHERE horse_name = ? AND temps_obtenu > 0
|
|
""", (horse_name,))
|
|
speed_result = c.fetchone()
|
|
|
|
if speed_result and speed_result[0] and speed_result[1] > 0:
|
|
avg_time = speed_result[0]
|
|
races = speed_result[1]
|
|
horse['speed_info'] = {
|
|
'avg_time_ms': round(avg_time, 0),
|
|
'races': races,
|
|
'avg_time_formatted': f"{int(avg_time//60000)}:{int((avg_time%60000)//1000):02d}"
|
|
}
|
|
else:
|
|
horse['speed_info'] = {'avg_time_ms': None, 'races': 0, 'avg_time_formatted': 'N/A'}
|
|
|
|
conn.close()
|
|
return jsonify({
|
|
'date': today,
|
|
'predictions': predictions,
|
|
'status': 'success'
|
|
})
|
|
|
|
except Exception as e:
|
|
return jsonify({'error': str(e), 'status': 'error'}), 500
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=8767, debug=True)
|