def main() -> None: """ Download retrosheet event (zip) files :return: None """ # make sure the constants are configured correctly try: constants.main() except Exception as exp: print( "You have an error in you constants file. Correct that before continuing" ) print(exp.args[0]) exit(1) parser = setup_args() args = parser.parse_args() try: params = validateArgs(args) except Exception as error: print(error) exit(1) for year in range(params.start_year, params.end_year + 1, 1): year = str(year) file_name = params.destination_dir + '/' + year + 'event.zip' url = params.base_url + 'events/' + year + 'eve.zip' print("Fetching " + file_name) req = requests.get(url) file = open(file_name, 'wb') for chunk in req.iter_content(100000): file.write(chunk) file.close()
def main() -> None: """ Take CSV files crated by bevent_process and insert that data into the bbhip database :return: None """ try: constants.main() except Exception as exp: print("You have an error in you constants file. You must correct that before you can continue") print(exp.args[0]) exit(1) connect_str = "user='******' host='localhost' dbname='bbhip'" conn = psycopg2.connect(connect_str) conn.autocommit = True cursor = conn.cursor() insert_player_query = """ INSERT INTO player ( id, last, first, play_debut, mgr_debut, coach_debut, ump_debut ) VALUES ( %s, %s, %s, %s, %s, %s, %s ); """ file = constants.RETRO_DATA_DIR+'/players.csv' with open(file, newline='') as csv_file: player = csv.reader(csv_file) for insert_data in player: # over come limitation in csv.reader convert empty values (i.e. '') to None (i.e. NULL) for i in range(len(insert_data)): if insert_data[i] == '': insert_data[i] = None print(insert_data[0:-1]) try: cursor.execute(insert_player_query, insert_data[0:-1]) except Exception as exp: print("problem inserting data") print(exp.args[0]) print("Finished processing file: " + file)
def main(): if len(sys.argv) == 2: path = sys.argv[1] elif len(sys.argv) == 1: path = "steam" else: print("Usage: Steamworks.NET_CodeGen.py [path/to/sdk/public/steam]") print(" If a path is not included then a steam/ folder must exist within the cwd.") return steamworksparser.Settings.fake_gameserver_interfaces = True ___parser = steamworksparser.parse(path) interfaces.main(___parser) constants.main(___parser) enums.main(___parser) structs.main(___parser) typedefs.main(___parser) output_dummy_files.main()
def main() -> None: """ Take event files downloaded by fetch_retrosheet_events.py and convert them to CSV files. :return: None """ try: constants.main() except Exception as exp: print( "You have an error in you constants file. You must correct that before you can continue" ) print(exp.args[0]) exit(1) for file in glob.glob(constants.RETRO_DATA_DIR + '/' + "*.zip"): base_name = os.path.basename(file) year = base_name[:4] storage_dir = constants.RETRO_DATA_DIR + '/' + year + 'Events' if os.path.isdir(storage_dir): if not os.access(storage_dir, os.W_OK): raise Exception(storage_dir + " exists but is not writable") else: os.mkdir(storage_dir, 0o755) with ZipFile(file, 'r') as zipObj: zipObj.extractall(storage_dir) os.chdir(storage_dir) for event_file in glob.glob(storage_dir + '/' + "*.EV*"): output_file = os.path.splitext(event_file)[0] myoutput = open(output_file + '.csv', 'w') subprocess.Popen([ "wine", constants.RETRO_TOOL_DIR + "/BEVENT.EXE", "-y", year, "-f", "0-96", event_file ], stdout=myoutput, stderr=subprocess.PIPE, universal_newlines=True)
+ "\n}" # form all non-corresponding statement for varType in constants.BASE: if varType is functionReturnType: continue # for the corresponding statement for fileNameBase in FILE_NAME_BASES: statement = "" if fileNameBase is FILE_NAME_BASE_SIMPLE: statement = "var a " + varType + "; " + "a = foo()" elif fileNameBase is FILE_NAME_BASE_VAR: statement = "var a " + varType + " = foo()" else: raise Exception if not destroy: output(statement, function,\ fileNameBase + varType + "_func_" + functionReturnType + ".go",\ isValid=False) else: os.remove(VALID_PATH + fileNameBase + varType + "_func_" + functionReturnType + ".go") return main(VALID_PATH, INVALID_PATH, valid, invalid)
def main() -> None: """ Take CSV files crated by bevent_process and insert that data into the bbhip database :return: None """ try: constants.main() except Exception as exp: print( "You have an error in you constants file. You must correct that before you can continue" ) print(exp.args[0]) exit(1) connect_str = "user='******' host='localhost' dbname='bbhip'" conn = psycopg2.connect(connect_str) conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) cursor = conn.cursor() insert_game_query = """ INSERT INTO game ( game_date, game_num, dow, visitor_name, visitor_league, visitor_game_num, home_name, home_league, home_game_num, visitor_score, home_score, game_len_outs, day_night, completion_info, forfeit_info, protest_info, park_id, attendance, game_time, visitor_line_score, home_line_score, visitor_at_bats, visitor_hits, visitor_doubles, visitor_triples, visitor_home_runs, visitor_rbi, visitor_sacrifice_hits, visitor_sacrifice_flies, visitor_hit_by_pitch, visitor_walks , visitor_intentional_walks, visitor_strikeouts, visitor_stolen_bases, visitor_caught_stealing, visitor_grounded_into_double_plays, visitor_awarded_first_on_catcher_interference, visitor_left_on_base, visitor_pitches_used, visitor_individual_earned_runs, visitor_team_earned_runs, visitor_wild_pitches, visitor_balks, visitor_putouts, visitor_assists, visitor_errors, visitor_passed_balls, visitor_double_plays, visitor_triple_plays, home_at_bats, home_hits, home_doubles, home_triples, home_home_runs, home_rbi, home_sacrifice_hits, home_sacrifice_flies, home_hit_by_pitch, home_walks , home_intentional_walks, home_strikeouts, home_stolen_bases, home_caught_stealing, home_grounded_into_double_plays, home_awarded_first_on_catcher_interference, home_left_on_base, home_pitches_used, home_individual_earned_runs, home_team_earned_runs, home_wild_pitches, home_balks, home_putouts, home_assists, home_errors, home_passed_balls, home_double_plays, home_triple_plays, ump_hp_id, ump_hp_name, ump_1b_id, ump_1b_name, ump_2b_id, ump_2b_name, ump_3b_id, ump_3b_name, ump_lf_id, ump_lf_name, ump_rf_id, ump_rf_name, visitor_mgr_id, visitor_mgr_name, home_mgr_id, home_mgr_name, winning_pitcher_id, winning_pitcher_name, losing_pitcher_id, losing_pitcher_name, saving_pitcher_id, saving_pitcher_name, game_winning_rbi_batter_id, game_winning_rbi_batter_name, visitor_starting_pitcher_id, visitor_starting_pitcher_name, home_starting_pitcher_id, home_starting_pitcher_name, visitor_pos_1_id, visitor_pos_1_name, visitor_pos_1_def_pos, visitor_pos_2_id, visitor_pos_2_name, visitor_pos_2_def_pos, visitor_pos_3_id, visitor_pos_3_name, visitor_pos_3_def_pos, visitor_pos_4_id, visitor_pos_4_name, visitor_pos_4_def_pos, visitor_pos_5_id, visitor_pos_5_name, visitor_pos_5_def_pos, visitor_pos_6_id, visitor_pos_6_name, visitor_pos_6_def_pos, visitor_pos_7_id, visitor_pos_7_name, visitor_pos_7_def_pos, visitor_pos_8_id, visitor_pos_8_name, visitor_pos_8_def_pos, visitor_pos_9_id, visitor_pos_9_name, visitor_pos_9_def_pos, home_pos_1_id, home_pos_1_name, home_pos_1_def_pos, home_pos_2_id, home_pos_2_name, home_pos_2_def_pos, home_pos_3_id, home_pos_3_name, home_pos_3_def_pos, home_pos_4_id, home_pos_4_name, home_pos_4_def_pos, home_pos_5_id, home_pos_5_name, home_pos_5_def_pos, home_pos_6_id, home_pos_6_name, home_pos_6_def_pos, home_pos_7_id, home_pos_7_name, home_pos_7_def_pos, home_pos_8_id, home_pos_8_name, home_pos_8_def_pos, home_pos_9_id, home_pos_9_name, home_pos_9_def_pos, addition_info, acquisition_type ) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s ); """ for zip_arc in glob.glob(constants.RETRO_DATA_DIR + '/' + "gl*.zip"): with ZipFile(zip_arc, 'r') as zipObj: zipObj.extractall(constants.RETRO_DATA_DIR + '/') for glob_item in glob.glob(constants.RETRO_DATA_DIR + '/GL*.TXT'): print("Processing file: " + glob_item) with open(glob_item, newline='') as csv_file: event_row = csv.reader(csv_file) for insert_data in event_row: # over come limitation in csv.reader convert empty values (i.e. '') to None (i.e. NULL) insert_data[0] = insert_data[0][0:4] + '-' + insert_data[0][ 4:6] + '-' + insert_data[0][6:8] for i in range(len(insert_data)): if insert_data[i] == '': insert_data[i] = None cursor.execute(insert_game_query, insert_data) print("Finished processing file: " + glob_item)
def main() -> None: """ Take CSV files crated by bevent_process and insert that data into the bbhip database :return: None """ try: constants.main() except Exception as exp: print( "You have an error in you constants file. You must correct that before you can continue" ) print(exp.args[0]) exit(1) connect_str = "user='******' host='localhost' dbname='bbhip'" conn = psycopg2.connect(connect_str) conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) cursor = conn.cursor() insert_event_query = """ INSERT INTO event ( game_id , home_team, game_date, game_num, visiting_team , inning , batting_team , outs , balls , strikes , pitch_sequence , vis_score , home_score , batter , batter_hand , res_batter , res_batter_hand , pitcher , pitcher_hand , res_pitcher , res_pitcher_hand , catcher , first_base , second_base , third_base , shortstop , left_field , center_field , right_field , first_runner , second_runner , third_runner , event_text , leadoff_flag , pinchhit_flag , defensive_position , lineup_position , event_type , batter_event_flag , ab_flag , hit_value , sh_flag , sf_flag , outs_on_play , double_play_flag , triple_play_flag , rbi_on_play , wild_pitch_flag , passed_ball_flag , fielded_by , batted_ball_type , bunt_flag , foul_flag , hit_location , num_errors , first_error_player , first_error_type , second_error_player , second_error_type , third_error_player , third_error_type , batter_dest , runner_on_first_dest , runner_on_second_dest , runner_on_third_dest , play_on_batter , play_on_runner_on_first , play_on_runner_on_second , play_on_runner_on_third , sb_for_runner_on_first_flag , sb_for_runner_on_second_flag , sb_for_runner_on_third_flag , cs_for_runner_on_first_flag , cs_for_runner_on_second_flag , cs_for_runner_on_third_flag , po_for_runner_on_first_flag , po_for_runner_on_second_flag , po_for_runner_on_third_flag , responsible_pitcher_for_runner_on_first , responsible_pitcher_for_runner_on_second , responsible_pitcher_for_runner_on_third , new_game_flag , end_game_flag , pinch_runner_on_first , pinch_runner_on_second , pinch_runner_on_third , runner_removed_for_pinch_runner_on_first , runner_removed_for_pinch_runner_on_second , runner_removed_for_pinch_runner_on_third , batter_removed_for_pinch_hitter , position_of_batter_removed_for_pinch_hitter , fielder_with_first_putout , fielder_with_second_putout , fielder_with_third_putout , fielder_with_first_assist , fielder_with_second_assist , fielder_with_third_assist , fielder_with_fourth_assist , fielder_with_fifth_assist , event_num ) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s ); """ for glob_item in glob.glob(constants.RETRO_DATA_DIR + '/*'): if os.path.isdir(glob_item): os.chdir(glob_item) for file in glob.glob('*.csv'): print("Processing file: " + file) with open(file, newline='') as csv_file: event_row = csv.reader(csv_file) for insert_data in event_row: # index zero is a combination of home_team, game_date and game_num home_team = insert_data[0][0:3] game_date = insert_data[0][3:7] + '-' + insert_data[0][ 7:9] + '-' + insert_data[0][9:11] game_num = insert_data[0][11:12] # over come limitation in csv.reader convert empty values (i.e. '') to None (i.e. NULL) insert_data.insert(1, home_team) insert_data.insert(2, game_date) insert_data.insert(3, game_num) for i in range(len(insert_data)): if insert_data[i] == '': insert_data[i] = None cursor.execute(insert_event_query, insert_data) print("Finished processing file: " + file)