108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
# %%
|
|
import requests
|
|
import json
|
|
from collections import defaultdict
|
|
|
|
prod_url = 'https://uefadigitalapi.developer.azure-api.net'
|
|
prod_primary_key = '9b849959b7aa40b9b1f966254c22fc6e'
|
|
prod_secondary_key = '116b2865175141e6955e6c83fe4651ae'
|
|
pre_url = 'https://uefadigitalapipre.developer.azure-api.net'
|
|
pre_primary_key = 'b6bdd59422614fa9932c03fb16666067'
|
|
pre_secondary_key = '4e61efa534f94f38a4c96ba9bc00f444'
|
|
|
|
# %%
|
|
|
|
competitionId = 1 # Champions League
|
|
seasonYear = 2025
|
|
|
|
|
|
|
|
# %%
|
|
|
|
|
|
|
|
"""" FINISHED GAMES """
|
|
|
|
|
|
uefa_match_url = f"https://api.digital.uefa.com/match/v5/matches?offset=0&limit=500&order=DESC&competitionId={competitionId}&seasonYear={seasonYear}&seasonsRange=ALL&&phase=ALL"
|
|
headers = {"Cache-Control":"no-cache","Ocp-Apim-Subscription-Key":prod_primary_key}
|
|
res = requests.get(uefa_match_url, headers=headers)
|
|
finished_json = res.json()
|
|
|
|
# # %%
|
|
|
|
|
|
# %%
|
|
"""
|
|
Match live score
|
|
Try it
|
|
Provide details about the score of a collection of matches given a number of conditions.
|
|
"""
|
|
|
|
|
|
# uefa_match_url = f"https://api.digital.uefa.com/match/v5/livescore&competitionId={competitionId}"
|
|
# headers = {"Cache-Control":"no-cache","Ocp-Apim-Subscription-Key":prod_primary_key}
|
|
# res = requests.get(uefa_match_url, headers=headers)
|
|
# res.json()
|
|
|
|
|
|
|
|
# %%
|
|
|
|
standings = defaultdict(lambda: defaultdict(lambda:0))
|
|
upcoming = []
|
|
|
|
for game in finished_json:
|
|
if game['round']['metaData']['name'] != 'League Phase':
|
|
continue
|
|
|
|
matchday = game['matchday']['name']
|
|
homeTeam = game['homeTeam']['teamCode']
|
|
awayTeam = game['awayTeam']['teamCode']
|
|
|
|
if homeTeam not in standings:
|
|
standings[homeTeam]['external_id'] = game['homeTeam']['id']
|
|
standings[homeTeam]['name'] = game['homeTeam']['internationalName']
|
|
standings[homeTeam]['country'] = game['homeTeam']['countryCode']
|
|
if awayTeam not in standings:
|
|
standings[awayTeam]['external_id'] = game['awayTeam']['id']
|
|
standings[awayTeam]['name'] = game['awayTeam']['internationalName']
|
|
standings[awayTeam]['country'] = game['awayTeam']['countryCode']
|
|
|
|
if game['status'] == "FINISHED":
|
|
homeScore = game['score']['total']['home']
|
|
awayScore = game['score']['total']['away']
|
|
|
|
standings[homeTeam]['games_played'] += 1
|
|
standings[awayTeam]['games_played'] += 1
|
|
standings[homeTeam]['goals_scored'] += homeScore
|
|
standings[awayTeam]['goals_scored'] += awayScore
|
|
standings[homeTeam]['goals_conceded'] += awayScore
|
|
standings[awayTeam]['goals_conceded'] += homeScore
|
|
standings[homeTeam]['goal_difference'] += homeScore - awayScore
|
|
standings[awayTeam]['goal_difference'] += awayScore - homeScore
|
|
if homeScore > awayScore:
|
|
standings[homeTeam]['wins'] += 1
|
|
standings[awayTeam]['losses'] += 1
|
|
standings[homeTeam]['points'] += 3
|
|
elif awayScore > homeScore:
|
|
standings[awayTeam]['wins'] += 1
|
|
standings[homeTeam]['losses'] += 1
|
|
standings[awayTeam]['points'] += 3
|
|
else:
|
|
standings[homeTeam]['draws'] += 1
|
|
standings[awayTeam]['draws'] += 1
|
|
standings[homeTeam]['points'] += 1
|
|
standings[awayTeam]['points'] += 1
|
|
|
|
else:
|
|
kickoff = game['kickOffTime']['dateTime']
|
|
upcoming.append((matchday,kickoff,homeTeam,awayTeam))
|
|
|
|
|
|
standings = dict(sorted(standings.items(), key=lambda x: (x[1]['points'],x[1]['goal_difference'],x[1]['goals_scored']), reverse=True))
|
|
upcoming = sorted(upcoming, key=lambda x: (x[0],x[1]))
|
|
|
|
# %%
|
|
|