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