def create_game(common, game): if common is None: return None competition = game["competitions"][0] situation = competition.get("situation") status = competition.get("status") time_remaining = status.get("displayClock", "") if status is not None else "" espn_status = competition["status"]["type"]["name"] status = Common.convert_status(espn_status) if status not in ["ACTIVE"]: time_remaining = "" ball_position = situation.get("possessionText", "") if situation is not None else "" down_string = situation.get("shortDownDistanceText", "") if situation is not None else "" down_string = down_string.replace("&", "+") home_team, away_team = competition["competitors"] possessing_team_id = situation.get("possession", None) if situation is not None else None if possessing_team_id is None: home_possession = None else: home_possession = possessing_team_id == home_team["id"] return {"type": "Football", "common": common, "extra_data": { "time_remaining": time_remaining, "ball_position": ball_position, "down_string": down_string, "home_possession": home_possession }}
def create_golf_common(game): competition = game["competitions"] while isinstance(competition, list): competition = competition[0] espn_status = competition["status"]["type"]["name"] status = Common.convert_status(espn_status) ordinal = Common.to_ordinal(competition["status"]["period"]) game_id = game["id"] earliest_tee_time = (None, None) # Find start time by looking at players for player in competition["competitors"]: tee_time = player["status"].get("teeTime") if tee_time is None: continue tee_time_value = parse(tee_time).astimezone(pytz.utc) earliest_tee_time_value, _ = earliest_tee_time if ( earliest_tee_time_value is None or tee_time_value < earliest_tee_time_value ): earliest_tee_time = (tee_time_value, tee_time) empty_team = Team.create_team("0", "", "", "", "", "000000", "000000") time, tee_time_display = earliest_tee_time now = datetime.datetime.now(tz=pytz.UTC) if time is None: time, tee_time_display = (parse(competition["date"]).astimezone(pytz.utc), competition["date"]) delta = abs(now - time) if delta > datetime.timedelta(hours=24) and status not in ["ACTIVE", "END"]: return None if status == "ACTIVE": if time > now: # if tee time in the future, this happens after Day X of play ends status = "END" if competition["scoringSystem"]["name"] == "Teamstroke": if "COMPLETE" in competition["rawData"]: status = "END" if status is not None: return Common.create_common( SportId.GOLF.value, empty_team, empty_team, status, ordinal, str(tee_time_display), int(game_id), 0, 0, ) else: return None