Add MLB Player support
This commit is contained in:
parent
a6f5443be7
commit
72968f5e5d
@ -81,7 +81,7 @@ def get_batting_stats(
|
||||
|
||||
def match_player_lines(all_batting: pd.DataFrame, all_players: pd.DataFrame, is_custom: bool = False):
|
||||
def get_pids(df_data):
|
||||
return get_all_pybaseball_ids([df_data["playerId"]], 'fangraphs', is_custom)
|
||||
return get_all_pybaseball_ids([df_data["playerId"]], 'fangraphs', is_custom, df_data['Name_vL'])
|
||||
|
||||
print(f'Now pulling mlbam player IDs...')
|
||||
ids_and_names = all_batting.apply(get_pids, axis=1)
|
||||
@ -100,6 +100,7 @@ def match_player_lines(all_batting: pd.DataFrame, all_players: pd.DataFrame, is_
|
||||
async def create_new_players(
|
||||
final_batting: pd.DataFrame, cardset: dict, card_base_url: str, release_dir: str, player_desc: str):
|
||||
new_players = []
|
||||
new_mlbplayers = {}
|
||||
|
||||
def create_batters(df_data):
|
||||
f_name = sanitize_name(df_data["name_first"]).title()
|
||||
@ -120,10 +121,25 @@ async def create_new_players(
|
||||
'fangr_id': int(float(df_data['key_fangraphs'])),
|
||||
'strat_code': int(float(df_data['key_mlbam']))
|
||||
})
|
||||
new_mlbplayers[df_data.name] = {
|
||||
'first_name': sanitize_name(df_data["name_first"]).title(),
|
||||
'last_name': sanitize_name(df_data["name_last"]).title(),
|
||||
'key_mlbam': int(float(df_data['key_mlbam'])),
|
||||
'key_fangraphs': int(float(df_data['key_fangraphs'])),
|
||||
'key_bbref': df_data['key_bbref'],
|
||||
'key_retro': df_data['key_retro']
|
||||
}
|
||||
|
||||
final_batting[final_batting['player_id'].isnull()].apply(create_batters, axis=1)
|
||||
print(f'Creating {len(new_players)} new players...')
|
||||
for x in new_players:
|
||||
mlb_query = await db_get('mlbplayers', params=[('key_bbref', x['bbref_id'])])
|
||||
if mlb_query['count'] > 0:
|
||||
x['mlbplayer_id'] = mlb_query['players'][0]['id']
|
||||
else:
|
||||
new_mlb = await db_post('mlbplayers/one', payload=new_mlbplayers[x['bbref_id']])
|
||||
x['mlbplayer_id'] = new_mlb['id']
|
||||
|
||||
this_player = await db_post('players', payload=x)
|
||||
final_batting.at[x['bbref_id'], 'player_id'] = this_player['player_id']
|
||||
final_batting.at[x['bbref_id'], 'p_name'] = this_player['p_name']
|
||||
|
||||
@ -943,7 +943,7 @@ def mlbteam_and_franchise(mlbam_playerid):
|
||||
return p_data
|
||||
|
||||
|
||||
def get_all_pybaseball_ids(player_id: list, key_type: str, is_custom: bool = False):
|
||||
def get_all_pybaseball_ids(player_id: list, key_type: str, is_custom: bool = False, full_name: str = None):
|
||||
if is_custom:
|
||||
try:
|
||||
long_player_id = int(player_id[0])
|
||||
@ -995,6 +995,17 @@ def get_all_pybaseball_ids(player_id: list, key_type: str, is_custom: bool = Fal
|
||||
q = pb.playerid_reverse_lookup(player_id, key_type=key_type)
|
||||
if len(q.values) > 0:
|
||||
return_val = q.loc[0]
|
||||
# Check manual players
|
||||
elif full_name is not None:
|
||||
names = full_name.split(' ')
|
||||
q = pb.playerid_lookup(last=names[-1], first=' '.join(names[:-1]), fuzzy=True)
|
||||
if len(q.values) > 0:
|
||||
return_val = q.loc[0]
|
||||
return_val['key_fangraphs'] = player_id[0]
|
||||
else:
|
||||
logging.error(f'get_all_pybaseball_ids - Could not find id {player_id} / {key_type} or '
|
||||
f'{full_name} / full name in pybaseball')
|
||||
return_val = None
|
||||
else:
|
||||
logging.error(f'get_all_pybaseball_ids - Could not find id {player_id} / {key_type} in pybaseball')
|
||||
return_val = None
|
||||
|
||||
@ -10,7 +10,9 @@ master_debug = True
|
||||
alt_database = False
|
||||
|
||||
if alt_database == 'dev':
|
||||
DB_URL = 'https://pd.manticorum.com/api'
|
||||
DB_URL = 'https://pddev.manticorum.com/api'
|
||||
elif alt_database == 'sba':
|
||||
DB_URL = 'https://sba.manticorum.com/api'
|
||||
|
||||
|
||||
def param_char(other_params):
|
||||
|
||||
@ -546,7 +546,8 @@ def balks(total_balks: int, innings: float, season_pct):
|
||||
def wild_pitches(total_wps: int, innings: float, season_pct):
|
||||
if innings == 0:
|
||||
return 0
|
||||
return min(round((int(total_wps) * 200 * season_pct) / float(innings)), 20)
|
||||
# return min(round((int(total_wps) * 200 * season_pct) / float(innings)), 20)
|
||||
return min(round((int(total_wps) * 200) / float(innings)), 20)
|
||||
|
||||
|
||||
def closer_rating(gf: int, saves: int, games: int):
|
||||
|
||||
@ -90,7 +90,7 @@ async def pd_pitchingcardratings_df(cardset_id: int):
|
||||
def match_player_lines(
|
||||
all_pitching: pd.DataFrame, all_players: pd.DataFrame, df_p: pd.DataFrame, is_custom: bool = False):
|
||||
def get_pids(df_data):
|
||||
return get_all_pybaseball_ids([df_data["playerId"]], 'fangraphs', is_custom)
|
||||
return get_all_pybaseball_ids([df_data["playerId"]], 'fangraphs', is_custom, df_data['Name_vL'])
|
||||
|
||||
print(f'Now pulling mlbam player IDs...')
|
||||
ids_and_names = all_pitching.apply(get_pids, axis=1)
|
||||
@ -111,6 +111,7 @@ def match_player_lines(
|
||||
async def create_new_players(
|
||||
final_pitching: pd.DataFrame, cardset: dict, card_base_url: str, release_dir: str, player_desc: str):
|
||||
new_players = []
|
||||
new_mlbplayers = {}
|
||||
|
||||
def create_pitchers(df_data):
|
||||
f_name = sanitize_name(df_data["name_first"]).title()
|
||||
@ -131,10 +132,25 @@ async def create_new_players(
|
||||
'fangr_id': int(float(df_data['key_fangraphs'])),
|
||||
'strat_code': int(float(df_data['key_mlbam']))
|
||||
})
|
||||
new_mlbplayers[df_data.name] = {
|
||||
'first_name': sanitize_name(df_data["name_first"]).title(),
|
||||
'last_name': sanitize_name(df_data["name_last"]).title(),
|
||||
'key_mlbam': int(float(df_data['key_mlbam'])),
|
||||
'key_fangraphs': int(float(df_data['key_fangraphs'])),
|
||||
'key_bbref': df_data['key_bbref'],
|
||||
'key_retro': df_data['key_retro']
|
||||
}
|
||||
|
||||
final_pitching[final_pitching['player_id'].isnull()].apply(create_pitchers, axis=1)
|
||||
print(f'Creating {len(new_players)} new players...')
|
||||
for x in new_players:
|
||||
mlb_query = await db_get('mlbplayers', params=[('key_bbref', x['bbref_id'])])
|
||||
if mlb_query['count'] > 0:
|
||||
x['mlbplayer_id'] = mlb_query['players'][0]['id']
|
||||
else:
|
||||
new_mlb = await db_post('mlbplayers/one', payload=new_mlbplayers[x['bbref_id']])
|
||||
x['mlbplayer_id'] = new_mlb['id']
|
||||
|
||||
this_player = await db_post('players', payload=x)
|
||||
final_pitching.at[x['bbref_id'], 'player_id'] = this_player['player_id']
|
||||
final_pitching.at[x['bbref_id'], 'p_name'] = this_player['p_name']
|
||||
|
||||
Loading…
Reference in New Issue
Block a user