Spaces:
Runtime error
Runtime error
| import json | |
| import requests | |
| # make sure that year can be from 2018 to current year | |
| class LatestData: | |
| def __init__(self, year): | |
| self.year = year | |
| self.data = self.get_f1_data() | |
| self.events = self.get_events() | |
| def get_f1_data(self): | |
| response = requests.get( | |
| f"https://livetiming.formula1.com/static/{self.year}/Index.json", timeout=5) | |
| if response.status_code == 200: | |
| try: | |
| data = response.content.decode("utf-8-sig") | |
| return json.loads(data) | |
| except json.JSONDecodeError as e: | |
| print("Failed to parse JSON data:", e) | |
| return None | |
| else: | |
| print("Failed to get data. Status code:", response.status_code) | |
| return None | |
| def get_events(self): | |
| events = [] | |
| for meeting in self.data['Meetings']: | |
| events.append(meeting['Name']) | |
| return events | |
| def get_sessions(self, event): | |
| sessions = [] | |
| for meeting in self.data['Meetings']: | |
| if meeting['Name'] == event: | |
| for session in meeting['Sessions']: | |
| sessions.append(session['Name']) | |
| return sessions | |
| def team_colors(year: int) -> dict: | |
| team_colors = {} | |
| if year == 2023: | |
| team_colors = { | |
| "Red Bull Racing": "#ffe119", | |
| "Ferrari": "#e6194b", | |
| "Aston Martin": "#3cb44b", | |
| "Mercedes": "#00c0bf", | |
| "Alpine": "#f032e6", | |
| "Haas F1 Team": "#ffffff", | |
| "McLaren": "#f58231", | |
| "Alfa Romeo": "#800000", | |
| "AlphaTauri": "#dcbeff", | |
| "Williams": "#4363d8", | |
| "Red Bull Racing Honda RBPT": "#ffe119", | |
| "Ferrari": "#e6194b", | |
| "Aston Martin Aramco Mercedes": "#3cb44b", | |
| "Mercedes": "#00c0bf", | |
| "Alpine Renault": "#f032e6", | |
| "Haas Ferrari": "#ffffff", | |
| "McLaren Mercedes": "#f58231", | |
| "Alfa Romeo Ferrari": "#800000", | |
| "AlphaTauri Honda RBPT": "#dcbeff", | |
| "Williams Mercedes": "#4363d8", | |
| } | |
| if year == 2022: | |
| team_colors = { | |
| "Red Bull Racing": "#ffe119", | |
| "Ferrari": "#e6194b", | |
| "Aston Martin": "#3cb44b", | |
| "Mercedes": "#00c0bf", | |
| "Alpine": "#f032e6", | |
| "Haas F1 Team": "#ffffff", | |
| "McLaren": "#f58231", | |
| "Alfa Romeo": "#800000", | |
| "AlphaTauri": "#dcbeff", | |
| "Williams": "#4363d8", | |
| } | |
| if year == 2021: | |
| team_colors = { | |
| "Red Bull Racing": "#ffe119", | |
| "Mercedes": "#00c0bf", | |
| "Ferrari": "#e6194b", | |
| "Alpine": "#f032e6", | |
| "McLaren": "#f58231", | |
| "Alfa Romeo Racing": "#800000", | |
| "Aston Martin": "#3cb44b", | |
| "Haas F1 Team": "#ffffff", | |
| "AlphaTauri": "#dcbeff", | |
| "Williams": "#4363d8", | |
| } | |
| if year == 2020: | |
| team_colors = { | |
| "Red Bull Racing": "#000099", | |
| "Renault": "#ffe119", | |
| "Racing Point": "#f032e6", | |
| "Mercedes": "#00c0bf", | |
| "Ferrari": "#e6194b", | |
| "McLaren": "#f58231", | |
| "Alfa Romeo Racing": "#800000", | |
| "Haas F1 Team": "#ffffff", | |
| "AlphaTauri": "#dcbeff", | |
| "Williams": "#4363d8", | |
| } | |
| if year == 2019: | |
| team_colors = { | |
| "Red Bull Racing": "#000099", | |
| "Renault": "#ffe119", | |
| "Racing Point": "#f032e6", | |
| "Toro Rosso": "#dcbeff", | |
| "Mercedes": "#00c0bf", | |
| "Ferrari": "#e6194b", | |
| "McLaren": "#f58231", | |
| "Alfa Romeo Racing": "#800000", | |
| "Haas F1 Team": "#ffffff", | |
| "Williams": "#4363d8", | |
| } | |
| if year == 2018: | |
| team_colors = { | |
| "Red Bull Racing": "#000099", | |
| "Renault": "#ffe119", | |
| "Toro Rosso": "#dcbeff", | |
| "Force India": "#f032e6", | |
| "Sauber": "#800000", | |
| "Mercedes": "#00c0bf", | |
| "Ferrari": "#e6194b", | |
| "McLaren": "#f58231", | |
| "Haas F1 Team": "#ffffff", | |
| "Williams": "#4363d8", | |
| } | |
| return team_colors | |