Spaces:
Running
Running
File size: 3,505 Bytes
3231b63 1a89c67 3231b63 7727a49 3231b63 112a098 3231b63 1ab47cd 74a75f8 1a89c67 3231b63 5dac924 1a89c67 3231b63 1a89c67 3231b63 1a89c67 3231b63 4bde48e 1a89c67 fea52d0 1a89c67 74a75f8 3231b63 1a89c67 c1442da 1a89c67 c1442da 1a89c67 3231b63 1a89c67 4bde48e 1a89c67 fea52d0 1a89c67 7a9bbd4 1a89c67 3231b63 1a89c67 3231b63 b2e7453 3231b63 b2e7453 1a89c67 61f43a3 3231b63 0d3f186 3231b63 1a89c67 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
from Source.Predict import predict
from flask import Flask, render_template, jsonify, request, session
import requests
import pickle as pkl
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
import json
with open('Source/Data/record.json','r') as f:
record = json.load(f)
with open('Source/Data/lines.json','r') as f:
lines = json.load(f)
app = Flask(__name__, template_folder="Templates", static_folder="Static", static_url_path="/Static")
app.config.update(
SESSION_COOKIE_SECURE=True,
SESSION_COOKIE_SAMESITE='None',
)
app.secret_key = 'green-flounder'
# get week, season
current_week, season = predict.get_week()
current_games = predict.get_games(current_week)[['Date','Away Team','Home Team']]
available_weeks = list(range(current_week+1))[2:]
available_weeks.reverse()
# load current data by default
@app.route('/')
def index():
print('Current Week', current_week)
session['selected_week'] = current_week
for week in available_weeks:
session[f'games_week_{week}'] = None
session[f'games_week_{current_week}'] = current_games.to_json()
return render_template('index.html', **record)
# send week list to front end
@app.route('/get_weeks')
def get_weeks():
return jsonify(available_weeks)
# send lines to front end
@app.route('/get_lines')
def get_lines():
try:
return jsonify(lines[str(session.get('selected_week'))])
except:
return jsonify(lines[str(current_week)])
# send games of selected week to front end
@app.route('/get_games')
def get_games():
requested_week = int(request.args.get('week'))
session['selected_week'] = requested_week
# If select a new week
if requested_week and requested_week != current_week:
print("Requested Week:", requested_week)
# Check if that week's games are cached
if session.get(f'games_week_{requested_week}'):
print("Using cached games")
print(session.get(f'games_week_{requested_week}'))
games = session.get(f'games_week_{requested_week}')
games = json.loads(games)
return jsonify(games)
else:
games = predict.get_games(requested_week)[['Date','Away Team','Home Team']]
session[f'games_week_{requested_week}'] = games.to_json(orient='records')
return jsonify(games.to_dict(orient='records'))
else:
games = current_games
return jsonify(games.to_dict(orient='records'))
# make predictions
@app.route('/submit_games', methods=['POST'])
def submit_games():
data = request.json
data = pd.DataFrame(data).replace('', np.nan).dropna()
home_teams = data['HomeTeam'].values
away_teams = data['AwayTeam'].values
ou_lines = data['OverUnderLine'].values
row_indices = data['rowIndex'].values
moneylines = []
over_unders = []
for row_index,home,away,total in zip(row_indices,home_teams,away_teams,ou_lines):
selected_week = session.get('selected_week')
game_id, moneyline, over_under = predict.predict(home,away,season,selected_week,total)
moneyline['rowIndex'] = int(row_index)
over_under['rowIndex'] = int(row_index)
moneylines.append(moneyline)
over_unders.append(over_under)
return jsonify({'moneylines': moneylines,
'over_unders': over_unders})
if __name__ == '__main__':
app.run(host='0.0.0.0', port='7860', debug=True) |