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