James McCool
commited on
Commit
·
7852820
1
Parent(s):
bf8ac3e
Add support for DraftKings/Fanduel file uploads in app.py: implement a new upload option for processing lineups, integrating a dedicated loading function for enhanced compatibility with different data sources.
Browse files- app.py +16 -10
- global_func/load_dk_fd_file.py +34 -0
app.py
CHANGED
|
@@ -10,6 +10,7 @@ import random
|
|
| 10 |
from global_func.clean_player_name import clean_player_name
|
| 11 |
from global_func.load_file import load_file
|
| 12 |
from global_func.load_ss_file import load_ss_file
|
|
|
|
| 13 |
from global_func.find_name_mismatches import find_name_mismatches
|
| 14 |
from global_func.predict_dupes import predict_dupes
|
| 15 |
from global_func.highlight_rows import highlight_changes, highlight_changes_winners, highlight_changes_losers
|
|
@@ -62,15 +63,14 @@ with tab1:
|
|
| 62 |
with col2:
|
| 63 |
st.subheader("Portfolio File")
|
| 64 |
st.info("Go ahead and upload a portfolio file here. Only include player columns and an optional 'Stack' column if you are playing MLB.")
|
| 65 |
-
|
| 66 |
-
st.
|
| 67 |
-
if
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
del st.session_state['export_portfolio']
|
| 74 |
|
| 75 |
else:
|
| 76 |
portfolio_file = st.file_uploader("Upload Portfolio File (CSV or Excel)", type=['csv', 'xlsx', 'xls'])
|
|
@@ -80,12 +80,18 @@ with tab1:
|
|
| 80 |
del st.session_state['export_portfolio']
|
| 81 |
if 'portfolio' not in st.session_state:
|
| 82 |
if portfolio_file:
|
| 83 |
-
if
|
| 84 |
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_ss_file(portfolio_file, st.session_state['csv_file'])
|
| 85 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 86 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 87 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 88 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
else:
|
| 90 |
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_file(portfolio_file)
|
| 91 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
|
|
|
| 10 |
from global_func.clean_player_name import clean_player_name
|
| 11 |
from global_func.load_file import load_file
|
| 12 |
from global_func.load_ss_file import load_ss_file
|
| 13 |
+
from global_func.load_dk_fd_file import load_dk_fd_file
|
| 14 |
from global_func.find_name_mismatches import find_name_mismatches
|
| 15 |
from global_func.predict_dupes import predict_dupes
|
| 16 |
from global_func.highlight_rows import highlight_changes, highlight_changes_winners, highlight_changes_losers
|
|
|
|
| 63 |
with col2:
|
| 64 |
st.subheader("Portfolio File")
|
| 65 |
st.info("Go ahead and upload a portfolio file here. Only include player columns and an optional 'Stack' column if you are playing MLB.")
|
| 66 |
+
|
| 67 |
+
upload_toggle = st.selectbox("What source are you uploading from?", options=['SaberSim (Just IDs)', 'Draftkings/Fanduel (Names + IDs)', 'Other (Just Names)'])
|
| 68 |
+
if upload_toggle == 'SaberSim (Just IDs)' or upload_toggle == 'Draftkings/Fanduel (Names + IDs)':
|
| 69 |
+
portfolio_file = st.file_uploader("Upload Portfolio File (CSV or Excel)", type=['csv', 'xlsx', 'xls'])
|
| 70 |
+
if 'portfolio' in st.session_state:
|
| 71 |
+
del st.session_state['portfolio']
|
| 72 |
+
if 'export_portfolio' in st.session_state:
|
| 73 |
+
del st.session_state['export_portfolio']
|
|
|
|
| 74 |
|
| 75 |
else:
|
| 76 |
portfolio_file = st.file_uploader("Upload Portfolio File (CSV or Excel)", type=['csv', 'xlsx', 'xls'])
|
|
|
|
| 80 |
del st.session_state['export_portfolio']
|
| 81 |
if 'portfolio' not in st.session_state:
|
| 82 |
if portfolio_file:
|
| 83 |
+
if upload_toggle == 'SaberSim (Just IDs)':
|
| 84 |
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_ss_file(portfolio_file, st.session_state['csv_file'])
|
| 85 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 86 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 87 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 88 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 89 |
+
elif upload_toggle == 'Draftkings/Fanduel (Names + IDs)':
|
| 90 |
+
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_dk_fd_file(portfolio_file, st.session_state['csv_file'])
|
| 91 |
+
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 92 |
+
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 93 |
+
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 94 |
+
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 95 |
else:
|
| 96 |
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_file(portfolio_file)
|
| 97 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
global_func/load_dk_fd_file.py
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
import numpy as np
|
| 3 |
+
import pandas as pd
|
| 4 |
+
import time
|
| 5 |
+
from fuzzywuzzy import process
|
| 6 |
+
|
| 7 |
+
def load_dk_fd_file(lineups, csv_file):
|
| 8 |
+
df = csv_file.copy()
|
| 9 |
+
try:
|
| 10 |
+
name_dict = dict(zip(df['Name + ID'], df['Name']))
|
| 11 |
+
except:
|
| 12 |
+
name_dict = dict(zip(df['Id'], df['Nickname']))
|
| 13 |
+
|
| 14 |
+
# Now load and process the lineups file
|
| 15 |
+
try:
|
| 16 |
+
if lineups.name.endswith('.csv'):
|
| 17 |
+
lineups_df = pd.read_csv(lineups)
|
| 18 |
+
elif lineups.name.endswith(('.xls', '.xlsx')):
|
| 19 |
+
lineups_df = pd.read_excel(lineups)
|
| 20 |
+
else:
|
| 21 |
+
st.error('Please upload either a CSV or Excel file for lineups')
|
| 22 |
+
return None, None
|
| 23 |
+
|
| 24 |
+
export_df = lineups_df.copy()
|
| 25 |
+
|
| 26 |
+
# Map the IDs to names
|
| 27 |
+
for col in lineups_df.columns:
|
| 28 |
+
lineups_df[col] = lineups_df[col].map(name_dict)
|
| 29 |
+
|
| 30 |
+
return export_df, lineups_df
|
| 31 |
+
|
| 32 |
+
except Exception as e:
|
| 33 |
+
st.error(f'Error loading lineups file: {str(e)}')
|
| 34 |
+
return None, None
|