marci / main.py
BraydenMoore's picture
uhhh
4774d56
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))[3:]
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)