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