Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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,
     )
Ejemplo n.º 3
0
 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,
     )
Ejemplo n.º 4
0
 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,
     )
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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,
     )
Ejemplo n.º 7
0
 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,
     )
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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,
     )
Ejemplo n.º 10
0
 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,
     )
Ejemplo n.º 11
0
 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,
     )
Ejemplo n.º 12
0
 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,
     )
Ejemplo n.º 13
0
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"])