Esempio n. 1
0
    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