|
import streamlit as st |
|
import numpy as np |
|
import pandas as pd |
|
import time |
|
from rapidfuzz import process |
|
import re |
|
|
|
|
|
from global_func.clean_player_name import clean_player_name |
|
|
|
sport_headers = { |
|
'Draftkings': { |
|
'Classic' : { |
|
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'], |
|
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'], |
|
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'], |
|
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'], |
|
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'], |
|
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'], |
|
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'], |
|
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'], |
|
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'], |
|
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'], |
|
}, |
|
'Showdown' : { |
|
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
}, |
|
}, |
|
'Fanduel': { |
|
'Classic' : { |
|
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'], |
|
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'], |
|
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'WNBA' : ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4'], |
|
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'MLB' : ['P', 'C/1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL'], |
|
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'], |
|
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'], |
|
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'], |
|
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'], |
|
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'], |
|
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'], |
|
}, |
|
'Showdown' : { |
|
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], |
|
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], |
|
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], |
|
}, |
|
}, |
|
} |
|
|
|
def load_file(upload, site_var, type_var, sport_var, upload_type): |
|
if upload is not None: |
|
try: |
|
clean_name = re.sub(r' \(\d+\)', '', upload.name) |
|
|
|
if clean_name.endswith('.csv'): |
|
df = pd.read_csv(upload) |
|
elif clean_name.endswith(('.xls', '.xlsx')): |
|
df = pd.read_excel(upload) |
|
else: |
|
st.error('Please upload either a CSV or Excel file') |
|
return None, None |
|
|
|
for col in df.columns: |
|
if "Unnamed" in col: |
|
df = df.drop(columns=[col]) |
|
|
|
if upload_type == 'portfolio': |
|
df.columns = sport_headers[site_var][type_var][sport_var] |
|
|
|
export_df = df.copy() |
|
|
|
for col in df.columns: |
|
if df[col].dtype == 'object': |
|
df[col] = df[col].apply(lambda x: clean_player_name(x) if isinstance(x, str) else x) |
|
|
|
return export_df, df |
|
except Exception as e: |
|
st.error(f'Error loading file: {str(e)}') |
|
return None |
|
return None |