Refactor for manual updates
This commit is contained in:
parent
bf35bca7d8
commit
48c9cec364
@ -410,6 +410,32 @@ async def post_player_updates(
|
||||
return len(player_updates)
|
||||
|
||||
|
||||
async def run_batter_fielding(season: int, offense_stats: pd.DataFrame, season_pct: float, post_batters: bool):
|
||||
print(f'Pulling catcher defense...')
|
||||
df_c = cde.get_bbref_fielding_df('c', season)
|
||||
print(f'Pulling first base defense...')
|
||||
df_1b = cde.get_bbref_fielding_df('1b', season)
|
||||
print(f'Pulling second base defense...')
|
||||
df_2b = cde.get_bbref_fielding_df('2b', season)
|
||||
print(f'Pulling third base defense...')
|
||||
df_3b = cde.get_bbref_fielding_df('3b', season)
|
||||
print(f'Pulling short stop defense...')
|
||||
df_ss = cde.get_bbref_fielding_df('ss', season)
|
||||
print(f'Pulling left field defense...')
|
||||
df_lf = cde.get_bbref_fielding_df('lf', season)
|
||||
print(f'Pulling center field defense...')
|
||||
df_cf = cde.get_bbref_fielding_df('cf', season)
|
||||
print(f'Pulling right field defense...')
|
||||
df_rf = cde.get_bbref_fielding_df('rf', season)
|
||||
print(f'Pulling outfield defense...')
|
||||
df_of = cde.get_bbref_fielding_df('of', season)
|
||||
print(f'Positions data is retrieved')
|
||||
|
||||
await cde.create_positions(
|
||||
offense_stats, season_pct, post_batters, df_c, df_1b, df_2b, df_3b, df_ss, df_lf, df_cf, df_rf, df_of
|
||||
)
|
||||
|
||||
|
||||
async def run_batters(
|
||||
cardset: dict, input_path: str, post_players: bool, card_base_url: str, release_directory: str,
|
||||
player_description: str, season_pct: float, post_batters: bool, pull_fielding: bool, season: int,
|
||||
@ -440,29 +466,7 @@ async def run_batters(
|
||||
|
||||
await calculate_batting_ratings(offense_stats, post_batters)
|
||||
if pull_fielding:
|
||||
print(f'Pulling catcher defense...')
|
||||
df_c = cde.get_bbref_fielding_df('c', season)
|
||||
print(f'Pulling first base defense...')
|
||||
df_1b = cde.get_bbref_fielding_df('1b', season)
|
||||
print(f'Pulling second base defense...')
|
||||
df_2b = cde.get_bbref_fielding_df('2b', season)
|
||||
print(f'Pulling third base defense...')
|
||||
df_3b = cde.get_bbref_fielding_df('3b', season)
|
||||
print(f'Pulling short stop defense...')
|
||||
df_ss = cde.get_bbref_fielding_df('ss', season)
|
||||
print(f'Pulling left field defense...')
|
||||
df_lf = cde.get_bbref_fielding_df('lf', season)
|
||||
print(f'Pulling center field defense...')
|
||||
df_cf = cde.get_bbref_fielding_df('cf', season)
|
||||
print(f'Pulling right field defense...')
|
||||
df_rf = cde.get_bbref_fielding_df('rf', season)
|
||||
print(f'Pulling outfield defense...')
|
||||
df_of = cde.get_bbref_fielding_df('of', season)
|
||||
print(f'Positions data is retrieved')
|
||||
|
||||
await cde.create_positions(
|
||||
offense_stats, season_pct, post_batters, df_c, df_1b, df_2b, df_3b, df_ss, df_lf, df_cf, df_rf, df_of
|
||||
)
|
||||
await run_batter_fielding(season, offense_stats, season_pct, post_batters)
|
||||
|
||||
await post_player_updates(
|
||||
cardset, card_base_url, release_directory, player_description, is_liveseries, post_batters, is_custom
|
||||
|
||||
44
manual_pull_fielding.py
Normal file
44
manual_pull_fielding.py
Normal file
@ -0,0 +1,44 @@
|
||||
import asyncio
|
||||
import sys
|
||||
|
||||
import batters.creation
|
||||
import pitchers.creation
|
||||
|
||||
from creation_helpers import get_args, pd_players_df, pd_positions_df
|
||||
from db_calls import db_get
|
||||
from defenders import calcs_defense as cde
|
||||
|
||||
|
||||
async def main(args):
|
||||
arg_data = get_args(args)
|
||||
|
||||
cardset_name = arg_data['cardset_name']
|
||||
print(f'Searching for cardset: {cardset_name}')
|
||||
c_query = await db_get('cardsets', params=[('name', cardset_name)])
|
||||
|
||||
if c_query['count'] == 0:
|
||||
print(f'I do not see a cardset named {cardset_name}')
|
||||
return
|
||||
cardset = c_query['cardsets'][0]
|
||||
del c_query
|
||||
|
||||
if 'season' in arg_data:
|
||||
season = arg_data['season']
|
||||
else:
|
||||
season = int(cardset['name'][:4])
|
||||
|
||||
post_batters = True if 'post_batters' not in arg_data or arg_data['post_batters'].lower() == 'true' else False
|
||||
post_pitchers = True if 'post_pitchers' not in arg_data or arg_data['post_pitchers'].lower() == 'true' else False
|
||||
post_players = True if 'post_players' not in arg_data or arg_data['post_players'].lower() == 'true' else False
|
||||
season_pct = 1.0 if 'season_pct' not in arg_data else float(arg_data['season_pct'])
|
||||
|
||||
all_players = await pd_players_df(cardset['id'])
|
||||
if post_batters:
|
||||
await batters.creation.run_batter_fielding(season, all_players, season_pct, post_batters)
|
||||
if post_pitchers:
|
||||
df_p = cde.get_bbref_fielding_df('p', season)
|
||||
await pitchers.creation.create_position(season_pct, all_players, post_pitchers, df_p)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main(sys.argv[1:]))
|
||||
28
raw play tracking.py
Normal file
28
raw play tracking.py
Normal file
@ -0,0 +1,28 @@
|
||||
import asyncio
|
||||
import datetime
|
||||
import sys
|
||||
|
||||
import pandas as pd
|
||||
from db_calls import db_get
|
||||
|
||||
|
||||
async def main(args):
|
||||
start_time = datetime.datetime.now()
|
||||
print(f'Pulling in season 9 scoring plays...')
|
||||
play_query = await db_get(
|
||||
'plays',
|
||||
api_ver=3,
|
||||
params=[('season', 9), ('s_type', 'regular'), ('limit', 100000), ('short_output', True)]
|
||||
)
|
||||
p_run_time = datetime.datetime.now() - start_time
|
||||
print(f'Pulled in {play_query["count"]} total plays in {round(p_run_time.total_seconds())} seconds')
|
||||
|
||||
s_plays = pd.DataFrame(play_query['plays'])
|
||||
print(f'Built the dataframe\nSaving to csv...')
|
||||
|
||||
s_plays.to_csv('regular-season-plays.csv', encoding='utf-8', index=False)
|
||||
print('Saved to regular-season-plays.csv')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main(sys.argv[1:]))
|
||||
108
refresh_cards.py
Normal file
108
refresh_cards.py
Normal file
@ -0,0 +1,108 @@
|
||||
import asyncio
|
||||
import datetime
|
||||
import logging
|
||||
import sys
|
||||
import urllib.parse
|
||||
|
||||
from creation_helpers import get_args
|
||||
from db_calls import db_get, url_get, db_post, db_patch, DB_URL
|
||||
|
||||
date = f'{datetime.datetime.now().year}-{datetime.datetime.now().month}-{datetime.datetime.now().day}'
|
||||
log_level = logging.INFO
|
||||
logging.basicConfig(
|
||||
filename=f'logs/{date}.log',
|
||||
format='%(asctime)s - check-cards - %(levelname)s - %(message)s',
|
||||
level=log_level
|
||||
)
|
||||
CARD_BASE_URL = f'{DB_URL}/v2/players'
|
||||
|
||||
|
||||
async def main(args):
|
||||
arg_data = get_args(args)
|
||||
|
||||
cardset_name = arg_data['cardset_name']
|
||||
print(f'Searching for cardset: {cardset_name}')
|
||||
c_query = await db_get('cardsets', params=[('name', cardset_name)])
|
||||
|
||||
if c_query['count'] == 0:
|
||||
print(f'I do not see a cardset named {cardset_name}')
|
||||
return
|
||||
cardset = c_query['cardsets'][0]
|
||||
del c_query
|
||||
|
||||
p_query = await db_get(
|
||||
'players',
|
||||
params=[('inc_dex', False), ('cardset_id', cardset['id']), ('short_output', True)]
|
||||
)
|
||||
if p_query['count'] == 0:
|
||||
raise ValueError(f'No players returned from Paper Dynasty API')
|
||||
all_players = p_query['players']
|
||||
del p_query
|
||||
|
||||
errors = []
|
||||
successes = []
|
||||
cxn_error = False
|
||||
count = -1
|
||||
start_time = datetime.datetime.now()
|
||||
|
||||
for x in all_players:
|
||||
if 'pitching' in x['image'] and 'skip_arms' in arg_data and arg_data['skip_arms'].lower() == 'true':
|
||||
pass
|
||||
elif 'batting' in x['image'] and 'skip_bats' in arg_data and arg_data['skip_bats'].lower() == 'true':
|
||||
pass
|
||||
elif 'start_id' in arg_data and int(arg_data['start_id']) > x['player_id']:
|
||||
pass
|
||||
# elif 'sombaseball' in x['image']:
|
||||
# errors.append((x, f'Bad card url: {x["image"]}'))
|
||||
elif 'sombaseball' in x['image']:
|
||||
print(f'Found old image URL for {x["p_name"]} - setting card type by pos_1: {x["pos_1"]}')
|
||||
release_dir = f'{start_time.year}-{start_time.month}-{start_time.day}'
|
||||
if x['pos_1'] in ['SP', 'RP', 'CP', 'P']:
|
||||
image_url = (f'{CARD_BASE_URL}/{x["player_id"]}/pitchingcard'
|
||||
f'{urllib.parse.quote("?d=")}{release_dir}')
|
||||
else:
|
||||
image_url = (f'{CARD_BASE_URL}/{x["player_id"]}/battingcard'
|
||||
f'{urllib.parse.quote("?d=")}{release_dir}')
|
||||
this_player = await db_patch(
|
||||
'players',
|
||||
object_id=x["player_id"],
|
||||
params=[('image', image_url)]
|
||||
)
|
||||
else:
|
||||
count += 1
|
||||
if count % 20 == 0:
|
||||
print(f'Card #{count + 1} being updated is {x["p_name"]}...')
|
||||
elif 'test_count' in arg_data and int(arg_data['test_count']) < count:
|
||||
print(f'Done test run')
|
||||
break
|
||||
|
||||
try:
|
||||
resp = await db_post(f'players/{x["player_id"]}/image-reset')
|
||||
|
||||
except ConnectionError as e:
|
||||
if cxn_error:
|
||||
raise e
|
||||
|
||||
cxn_error = True
|
||||
errors.append((x, e))
|
||||
|
||||
except ValueError as e:
|
||||
errors.append((x, e))
|
||||
|
||||
if len(errors) > 0:
|
||||
logging.error(f'All Errors:')
|
||||
for x in errors:
|
||||
logging.error(f'ID {x[0]["player_id"]} {x[0]["p_name"]} - Error: {x[1]}')
|
||||
|
||||
if len(successes) > 0:
|
||||
logging.debug(f'All Successes:')
|
||||
for x in successes:
|
||||
logging.info(f'ID {x["player_id"]} {x["p_name"]}')
|
||||
|
||||
p_run_time = datetime.datetime.now() - start_time
|
||||
print(f'\nAll done!\nErrors: {len(errors)}\nSuccesses: {len(successes)}')
|
||||
print(f'Total runtime: {p_run_time.total_seconds()} seconds')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main(sys.argv[1:]))
|
||||
Loading…
Reference in New Issue
Block a user