def game_id_pitch_app_id_map(self): id_map = defaultdict(list) for pitch_app_id in self.pitch_apps_any_pfx_error: result = validate_pitch_app_id(pitch_app_id) if result.failure: return {} pitch_app_dict = result.value id_map[pitch_app_dict["game_id"]].append(pitch_app_id) return id_map
def delete_brooks_pitchfx_log_local_file(self, pitch_app_id): result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_local_file_task( task=LocalFileTask.DELETE_FILE, data_set=DataSet.BROOKS_PITCHFX, file_type=VigFile.PARSED_JSON, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def get_json_brooks_pitchfx_s3(self, pitch_app_id): # pragma: no cover result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_s3_task( task=S3FileTask.DOWNLOAD, data_set=DataSet.BROOKS_PITCHFX, file_type=VigFile.PARSED_JSON, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def get_html_brooks_pitchfx_local_file(self, pitch_app_id): result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_local_file_task( task=LocalFileTask.READ_FILE, data_set=DataSet.BROOKS_PITCHFX, file_type=VigFile.SCRAPED_HTML, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def rename_brooks_pitchfx_log(self, old_pitch_app_id, new_pitch_app_id, year): # pragma: no cover result = validate_pitch_app_id(old_pitch_app_id) if result.failure: return result game_dict = result.value old_key = self.file_helper.get_object_key( file_type=VigFile.PARSED_JSON, data_set=DataSet.BROOKS_PITCHFX, game_date=game_dict["game_date"], pitch_app_id=old_pitch_app_id, ) result = validate_pitch_app_id(new_pitch_app_id) if result.failure: return result game_dict = result.value new_key = self.file_helper.get_object_key( file_type=VigFile.PARSED_JSON, data_set=DataSet.BROOKS_PITCHFX, game_date=game_dict["game_date"], pitch_app_id=new_pitch_app_id, ) return self.file_helper.rename_s3_object(old_key, new_key)
def delete_html_brooks_pitch_logs_local_file(self, pitch_app_id): """Delete scraped HTML for brooks pitch log page from local folder.""" result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_local_file_task( task=LocalFileTask.DELETE_FILE, data_set=DataSet.BROOKS_PITCH_LOGS, file_type=VigFile.SCRAPED_HTML, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def save_html_brooks_pitch_log_local_file(self, pitch_app_id, html): result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_local_file_task( task=LocalFileTask.WRITE_FILE, data_set=DataSet.BROOKS_PITCH_LOGS, file_type=VigFile.SCRAPED_HTML, game_date=game_dict["game_date"], scraped_data=html, pitch_app_id=pitch_app_id, )
def validate_pitch_app(self, bbref_game_id=None, pitch_app_id=None): is_valid = False if not pitch_app_id and not bbref_game_id: return (is_valid, bbref_game_id, pitch_app_id) if bbref_game_id: is_valid = bbref_game_id in self.pitch_app_map else: try: bbref_game_id = validate_pitch_app_id(pitch_app_id).value["game_id"] except AttributeError: return (is_valid, bbref_game_id, pitch_app_id) if not pitch_app_id: pitch_app_id = f"{bbref_game_id}_{self.mlb_id}" return (is_valid, bbref_game_id, pitch_app_id)
def delete_html_brooks_pitchfx_log_s3(self, pitch_app_id): # pragma: no cover """Delete scraped HTML for brooks pitchfx data from s3.""" result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_s3_task( task=S3FileTask.DELETE, data_set=DataSet.BROOKS_PITCHFX, file_type=VigFile.SCRAPED_HTML, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def download_html_brooks_pitchfx_log(self, pitch_app_id): # pragma: no cover """Download raw HTML for brooks pitchfx data for a single pitching appearance.""" result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_s3_task( task=S3FileTask.DOWNLOAD, file_type=VigFile.SCRAPED_HTML, data_set=DataSet.BROOKS_PITCHFX, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def decode_json_brooks_pitchfx_log_s3(self, pitch_app_id): # pragma: no cover result = self.get_json_brooks_pitchfx_s3(pitch_app_id) if result.failure: return result result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_local_file_task( task=LocalFileTask.DECODE_JSON, data_set=DataSet.BROOKS_PITCHFX, file_type=VigFile.PARSED_JSON, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, delete_file=True, )
def upload_html_brooks_pitchfx(self, pitch_app_id, html): # pragma: no cover result = self.save_html_local(DataSet.BROOKS_PITCHFX, pitch_app_id, html) if result.failure: return result result = validate_pitch_app_id(pitch_app_id) if result.failure: return result game_dict = result.value return self.file_helper.perform_s3_task( task=S3FileTask.UPLOAD, file_type=VigFile.SCRAPED_HTML, data_set=DataSet.BROOKS_PITCHFX, game_date=game_dict["game_date"], pitch_app_id=pitch_app_id, )
def get_pitch_app_params(game_id: Optional[str] = None, mlb_id: Optional[str] = None, pitch_app_id: Optional[str] = None): if mlb_id and game_id: return (mlb_id, game_id) if not pitch_app_id: raise HTTPException( status_code=int(HTTPStatus.BAD_REQUEST), detail= "Must provide pitch_app_id OR game_id and mlb_id query parameters", ) result = validate_pitch_app_id(pitch_app_id) if result.failure: raise HTTPException( status_code=int(HTTPStatus.BAD_REQUEST), detail=f"{pitch_app_id} is not a valid pitch app ID") pitch_app_dict = result.value return (pitch_app_dict["pitcher_id"], pitch_app_dict["game_id"])