James McCool commited on
Commit
9d012a3
·
1 Parent(s): 9326be6

Add timezone handling for current date in salary retrieval functions across NFL, NBA, MLB, and NHL

Browse files
Files changed (2) hide show
  1. app.py +14 -7
  2. database_queries.py +394 -0
app.py CHANGED
@@ -131,7 +131,8 @@ st.markdown("""
131
 
132
  def grab_nfl_reg_salaries(slate_var: str):
133
  collection = salaries_db["NFL_reg_player_info"]
134
- today_str = datetime.now().strftime("%Y%m%d")
 
135
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
136
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
137
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -164,7 +165,8 @@ def grab_nfl_reg_salaries(slate_var: str):
164
 
165
  def grab_nfl_showdown_salaries():
166
  collection = salaries_db["NFL_showdown_player_info"]
167
- today_str = datetime.now().strftime("%Y%m%d")
 
168
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
169
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
170
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -172,7 +174,8 @@ def grab_nfl_showdown_salaries():
172
 
173
  def grab_nba_reg_salaries(slate_var: str):
174
  collection = salaries_db["NBA_reg_player_info"]
175
- today_str = datetime.now().strftime("%Y%m%d")
 
176
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
177
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
178
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -216,7 +219,8 @@ def grab_nba_showdown_salaries():
216
 
217
  def grab_mlb_reg_salaries(slate_var: str):
218
  collection = salaries_db["MLB_reg_player_info"]
219
- today_str = datetime.now().strftime("%Y%m%d")
 
220
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
221
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
222
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -249,7 +253,8 @@ def grab_mlb_reg_salaries(slate_var: str):
249
 
250
  def grab_mlb_showdown_salaries():
251
  collection = salaries_db["MLB_showdown_player_info"]
252
- today_str = datetime.now().strftime("%Y%m%d")
 
253
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
254
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
255
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -257,7 +262,8 @@ def grab_mlb_showdown_salaries():
257
 
258
  def grab_nhl_reg_salaries(slate_var: str):
259
  collection = salaries_db["NHL_reg_player_info"]
260
- today_str = datetime.now().strftime("%Y%m%d")
 
261
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
262
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
263
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
@@ -290,7 +296,8 @@ def grab_nhl_reg_salaries(slate_var: str):
290
 
291
  def grab_nhl_showdown_salaries():
292
  collection = salaries_db["NHL_showdown_player_info"]
293
- today_str = datetime.now().strftime("%Y%m%d")
 
294
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
295
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
296
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
131
 
132
  def grab_nfl_reg_salaries(slate_var: str):
133
  collection = salaries_db["NFL_reg_player_info"]
134
+ eastern = pytz.timezone('US/Eastern')
135
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
136
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
137
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
138
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
165
 
166
  def grab_nfl_showdown_salaries():
167
  collection = salaries_db["NFL_showdown_player_info"]
168
+ eastern = pytz.timezone('US/Eastern')
169
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
170
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
171
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
172
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
174
 
175
  def grab_nba_reg_salaries(slate_var: str):
176
  collection = salaries_db["NBA_reg_player_info"]
177
+ eastern = pytz.timezone('US/Eastern')
178
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
179
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
180
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
181
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
219
 
220
  def grab_mlb_reg_salaries(slate_var: str):
221
  collection = salaries_db["MLB_reg_player_info"]
222
+ eastern = pytz.timezone('US/Eastern')
223
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
224
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
225
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
226
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
253
 
254
  def grab_mlb_showdown_salaries():
255
  collection = salaries_db["MLB_showdown_player_info"]
256
+ eastern = pytz.timezone('US/Eastern')
257
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
258
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
259
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
260
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
262
 
263
  def grab_nhl_reg_salaries(slate_var: str):
264
  collection = salaries_db["NHL_reg_player_info"]
265
+ eastern = pytz.timezone('US/Eastern')
266
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
267
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
268
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
269
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
 
296
 
297
  def grab_nhl_showdown_salaries():
298
  collection = salaries_db["NHL_showdown_player_info"]
299
+ eastern = pytz.timezone('US/Eastern')
300
+ today_str = datetime.now(eastern).strftime("%Y%m%d")
301
  records = pd.DataFrame(list(collection.find({'Date': {'$gte': today_str}})))
302
  records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
303
  records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
database_queries.py CHANGED
@@ -832,4 +832,398 @@ def init_FD_NBA_lineups(type_var, slate_var, prio_var, prio_mix, nba_db_translat
832
 
833
  FD_seed = raw_display.to_numpy()
834
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
835
  return FD_seed
 
832
 
833
  FD_seed = raw_display.to_numpy()
834
 
835
+ return FD_seed
836
+
837
+ def init_nhl_baselines(type_var: str, site_var: str, slate_var: str):
838
+
839
+ if slate_var == 'Main':
840
+ slate_var = 'Main Slate'
841
+ elif slate_var == 'Secondary':
842
+ slate_var = 'Secondary Slate'
843
+ elif slate_var == 'Auxiliary':
844
+ slate_var = 'Late Slate'
845
+
846
+ if type_var == 'Showdown':
847
+ collection = nhl_db["Player_Level_SD_ROO"]
848
+ cursor = collection.find()
849
+
850
+ raw_display = pd.DataFrame(list(cursor))
851
+ raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']]
852
+ raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float)
853
+ raw_display = raw_display.rename(columns={"player_id": "player_ID"})
854
+ raw_display = raw_display.loc[raw_display['Median'] > 0]
855
+ raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
856
+ sd_raw = raw_display.sort_values(by='Median', ascending=False)
857
+ dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings']
858
+ dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID']))
859
+ fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel']
860
+ fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID']))
861
+ fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str)
862
+ fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str)
863
+
864
+ dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site'])
865
+ fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site'])
866
+
867
+ dk_sd_roo_raw = dk_sd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
868
+ fd_sd_roo_raw = fd_sd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
869
+
870
+ dk_roo_raw = None
871
+ fd_roo_raw = None
872
+ dk_id_map = None
873
+ fd_id_map = None
874
+
875
+ else:
876
+ collection = nhl_db["Player_Level_ROO"]
877
+ cursor = collection.find()
878
+
879
+ raw_display = pd.DataFrame(list(cursor))
880
+ raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'Slate', 'Site', 'timestamp']]
881
+ raw_display = raw_display.rename(columns={"player_id": "player_ID"})
882
+ raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float)
883
+ raw_display = raw_display.loc[raw_display['Median'] > 0]
884
+ dk_roo_raw = raw_display[raw_display['Site'] == 'Draftkings']
885
+ fd_roo_raw = raw_display[raw_display['Site'] == 'Fanduel']
886
+ dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID']))
887
+ fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID']))
888
+ raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
889
+
890
+ dk_roo_raw = dk_roo_raw.drop(columns=['player_ID', 'Slate', 'timestamp', 'Site'])
891
+ fd_roo_raw = fd_roo_raw.drop(columns=['player_ID', 'Slate', 'timestamp', 'Site'])
892
+
893
+ dk_roo_raw = dk_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
894
+ fd_roo_raw = fd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
895
+
896
+ dk_sd_roo_raw = None
897
+ fd_sd_roo_raw = None
898
+ dk_sd_id_map = None
899
+ fd_sd_id_map = None
900
+
901
+ return dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map
902
+
903
+ def init_DK_NHL_lineups(type_var, slate_var, prio_var, prio_mix, nhl_db_translation, lineup_num, player_var2):
904
+
905
+ if prio_var == 'Mix':
906
+ prio_var = None
907
+
908
+ if type_var == 'Classic':
909
+ if slate_var == 'Main':
910
+ collection = nhl_db['DK_NHL_name_map']
911
+ cursor = collection.find()
912
+ raw_data = pd.DataFrame(list(cursor))
913
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
914
+
915
+ collection = nhl_db['DK_NHL_seed_frame_Main Slate']
916
+ if prio_var == None:
917
+ if player_var2 != []:
918
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
919
+ query_conditions = []
920
+
921
+ for player in player_var2:
922
+ # Create a condition for each player to check if they appear in any column
923
+ player_condition = {'$or': [{col: player} for col in player_columns]}
924
+ query_conditions.append(player_condition)
925
+
926
+ # Combine all player conditions with $or
927
+ if query_conditions:
928
+ filter_query = {'$or': query_conditions}
929
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
930
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
931
+ else:
932
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
933
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
934
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
935
+ else:
936
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
937
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
938
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
939
+ else:
940
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
941
+ raw_display = pd.DataFrame(list(cursor))
942
+
943
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'])
944
+
945
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']]
946
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
947
+ # Map names
948
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
949
+ elif slate_var == 'Secondary':
950
+ collection = nhl_db['DK_NHL_Secondary_name_map']
951
+ cursor = collection.find()
952
+ raw_data = pd.DataFrame(list(cursor))
953
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
954
+
955
+ collection = nhl_db['DK_NHL_seed_frame_Secondary Slate']
956
+ if prio_var == None:
957
+ if player_var2 != []:
958
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
959
+ query_conditions = []
960
+
961
+ for player in player_var2:
962
+ # Create a condition for each player to check if they appear in any column
963
+ player_condition = {'$or': [{col: player} for col in player_columns]}
964
+ query_conditions.append(player_condition)
965
+
966
+ # Combine all player conditions with $or
967
+ if query_conditions:
968
+ filter_query = {'$or': query_conditions}
969
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
970
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
971
+ else:
972
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
973
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
974
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
975
+ else:
976
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
977
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
978
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
979
+ else:
980
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
981
+ raw_display = pd.DataFrame(list(cursor))
982
+
983
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'])
984
+
985
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']]
986
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
987
+ # Map names
988
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
989
+ elif slate_var == 'Auxiliary':
990
+ collection = nhl_db['DK_NHL_Late_name_map']
991
+ cursor = collection.find()
992
+ raw_data = pd.DataFrame(list(cursor))
993
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
994
+
995
+ collection = nhl_db['DK_NHL_seed_frame_Late Slate']
996
+ if prio_var == None:
997
+ if player_var2 != []:
998
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
999
+ query_conditions = []
1000
+
1001
+ for player in player_var2:
1002
+ # Create a condition for each player to check if they appear in any column
1003
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1004
+ query_conditions.append(player_condition)
1005
+
1006
+ # Combine all player conditions with $or
1007
+ if query_conditions:
1008
+ filter_query = {'$or': query_conditions}
1009
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1010
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1011
+ else:
1012
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1013
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1014
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1015
+ else:
1016
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1017
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1018
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1019
+ else:
1020
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1021
+ raw_display = pd.DataFrame(list(cursor))
1022
+
1023
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'])
1024
+
1025
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']]
1026
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
1027
+ # Map names
1028
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
1029
+ elif type_var == 'Showdown':
1030
+ collection = nhl_db[nhl_db_translation[slate_var]]
1031
+ if prio_var == None:
1032
+ if player_var2 != []:
1033
+ player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
1034
+ query_conditions = []
1035
+
1036
+ for player in player_var2:
1037
+ # Create a condition for each player to check if they appear in any column
1038
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1039
+ query_conditions.append(player_condition)
1040
+
1041
+ # Combine all player conditions with $or
1042
+ if query_conditions:
1043
+ filter_query = {'$or': query_conditions}
1044
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1045
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1046
+ else:
1047
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1048
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1049
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1050
+ else:
1051
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1052
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1053
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1054
+ else:
1055
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1056
+ raw_display = pd.DataFrame(list(cursor))
1057
+
1058
+ raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
1059
+
1060
+ raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']]
1061
+
1062
+ DK_seed = raw_display.to_numpy()
1063
+
1064
+ return DK_seed
1065
+
1066
+ def init_FD_NHL_lineups(type_var, slate_var, prio_var, prio_mix, nhl_db_translation, lineup_num, player_var2):
1067
+
1068
+ if prio_var == 'Mix':
1069
+ prio_var = None
1070
+
1071
+ if type_var == 'Classic':
1072
+ if slate_var == 'Main':
1073
+ collection = nhl_db['FD_NHL_name_map']
1074
+ cursor = collection.find()
1075
+ raw_data = pd.DataFrame(list(cursor))
1076
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
1077
+
1078
+
1079
+ collection = nhl_db['FD_NHL_seed_frame_Main Slate']
1080
+ if prio_var == None:
1081
+ if player_var2 != []:
1082
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1083
+ query_conditions = []
1084
+
1085
+ for player in player_var2:
1086
+ # Create a condition for each player to check if they appear in any column
1087
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1088
+ query_conditions.append(player_condition)
1089
+
1090
+ # Combine all player conditions with $or
1091
+ if query_conditions:
1092
+ filter_query = {'$or': query_conditions}
1093
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1094
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1095
+ else:
1096
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1097
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1098
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1099
+ else:
1100
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1101
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1102
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1103
+ else:
1104
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1105
+ raw_display = pd.DataFrame(list(cursor))
1106
+
1107
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'])
1108
+
1109
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']]
1110
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1111
+ # Map names
1112
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
1113
+ elif slate_var == 'Secondary':
1114
+ collection = nhl_db['FD_NHL_Secondary_name_map']
1115
+ cursor = collection.find()
1116
+ raw_data = pd.DataFrame(list(cursor))
1117
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
1118
+
1119
+ collection = nhl_db['FD_NHL_Secondary_seed_frame_Secondary Slate']
1120
+ if prio_var == None:
1121
+ if player_var2 != []:
1122
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1123
+ query_conditions = []
1124
+
1125
+ for player in player_var2:
1126
+ # Create a condition for each player to check if they appear in any column
1127
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1128
+ query_conditions.append(player_condition)
1129
+
1130
+ # Combine all player conditions with $or
1131
+ if query_conditions:
1132
+ filter_query = {'$or': query_conditions}
1133
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1134
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1135
+ else:
1136
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1137
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1138
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1139
+ else:
1140
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1141
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1142
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1143
+ else:
1144
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1145
+ raw_display = pd.DataFrame(list(cursor))
1146
+
1147
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'])
1148
+
1149
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']]
1150
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1151
+ # Map names
1152
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
1153
+ elif slate_var == 'Auxiliary':
1154
+ collection = nhl_db['FD_NHL_Late_name_map']
1155
+ cursor = collection.find()
1156
+ raw_data = pd.DataFrame(list(cursor))
1157
+ names_dict = dict(zip(raw_data['key'], raw_data['value']))
1158
+
1159
+ collection = nhl_db['FD_NHL_Late_seed_frame_Late Slate']
1160
+ if prio_var == None:
1161
+ if player_var2 != []:
1162
+ player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1163
+ query_conditions = []
1164
+
1165
+ for player in player_var2:
1166
+ # Create a condition for each player to check if they appear in any column
1167
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1168
+ query_conditions.append(player_condition)
1169
+
1170
+ # Combine all player conditions with $or
1171
+ if query_conditions:
1172
+ filter_query = {'$or': query_conditions}
1173
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1174
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num = ((100 - prio_mix) / 100)))
1175
+ else:
1176
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1177
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1178
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1179
+ else:
1180
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1181
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1182
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1183
+ else:
1184
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1185
+ raw_display = pd.DataFrame(list(cursor))
1186
+
1187
+ raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'])
1188
+
1189
+ raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']]
1190
+ dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
1191
+ # Map names
1192
+ raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
1193
+
1194
+ elif type_var == 'Showdown':
1195
+ collection = nhl_db[nhl_db_translation[slate_var]]
1196
+ if prio_var == None:
1197
+ if player_var2 != []:
1198
+ player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
1199
+ query_conditions = []
1200
+
1201
+ for player in player_var2:
1202
+ # Create a condition for each player to check if they appear in any column
1203
+ player_condition = {'$or': [{col: player} for col in player_columns]}
1204
+ query_conditions.append(player_condition)
1205
+
1206
+ # Combine all player conditions with $or
1207
+ if query_conditions:
1208
+ filter_query = {'$or': query_conditions}
1209
+ cursor1 = collection.find(filter_query).limit(math.ceil(lineup_num * (prio_mix / 100)))
1210
+ cursor2 = collection.find(filter_query).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1211
+ else:
1212
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1213
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1214
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1215
+ else:
1216
+ cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
1217
+ cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
1218
+ raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
1219
+ else:
1220
+ cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
1221
+ raw_display = pd.DataFrame(list(cursor))
1222
+
1223
+ raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
1224
+
1225
+ raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']]
1226
+
1227
+ FD_seed = raw_display.to_numpy()
1228
+
1229
  return FD_seed