File size: 5,984 Bytes
a35b524
 
 
 
d9db89f
9d66c9c
a35b524
ad242a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bfa4569
ad242a2
bfa4569
ad242a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a35b524
 
 
 
 
 
 
 
9d66c9c
 
 
a35b524
fb3a403
9d66c9c
a35b524
fb3a403
a35b524
 
 
fb3a403
ad242a2
a35b524
 
 
 
 
 
 
 
 
 
 
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
103
104
105
106
107
108
109
110
111
112
113
114
115
import streamlit as st
import numpy as np
import pandas as pd
import time
from rapidfuzz import process
import re

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_ss_file(lineups, csv_file, site_var, type_var, sport_var):
    df = csv_file.copy()
    try:
        name_dict = dict(zip(df['ID'], df['Name']))
    except:
        name_dict = dict(zip(df['Id'], df['Nickname']))

    # Now load and process the lineups file
    try:
        clean_name = re.sub(r' \(\d+\)', '', lineups.name)
        
        if clean_name.endswith('.csv'):
            lineups_df = pd.read_csv(lineups)
            lineups_df = lineups_df.replace(0, np.nan)
        elif clean_name.endswith(('.xls', '.xlsx')):
            lineups_df = pd.read_excel(lineups)
            lineups_df = lineups_df.replace(0, np.nan)
        else:
            st.error('Please upload either a CSV or Excel file for lineups')
            return None, None
        lineups_df = lineups_df.dropna(how='any')
        lineups_df.columns = sport_headers[site_var][type_var][sport_var]
        export_df = lineups_df.copy()
        
        # Map the IDs to names
        for col in lineups_df.columns:
            lineups_df[col] = lineups_df[col].map(name_dict)
        
        return export_df, lineups_df
        
    except Exception as e:
        st.error(f'Error loading lineups file: {str(e)}')
        return None, None