import requests from prettytable import PrettyTable from pyfiglet import Figlet from unidecode import unidecode def get_f1(): result = [] f = Figlet(font="big") result += f.renderText("formula 1").split("\n") result.append("=" * 80) result.append("Last Race".center(80)) result.append("=" * 80) lastRace = requests.get("http://ergast.com/api/f1/current/last/results.json").json()['MRData']['RaceTable']['Races'][0] result.append(f"Round {lastRace['round']}: {lastRace['raceName']}") result.append(f"Took place @ {lastRace['Circuit']['circuitName']} on {lastRace['date']}") result.append("\n\n") results = PrettyTable() results.field_names = ['Position', 'Driver', 'Constructor', 'Time'] for i in lastRace['Results']: if i['status'] != "Finished": results.add_row([ i['positionText'], unidecode(i['Driver']['givenName']) + " " + unidecode(i['Driver']['familyName']), i['Constructor']['name'], f"DNF lap {i['laps']} ({i['status']})" ]) else: results.add_row([ i['positionText'], unidecode(i['Driver']['givenName']) + " " + unidecode(i['Driver']['familyName']), i['Constructor']['name'], i['Time']['time'] ]) result.append(results.get_string()) result.append("\n\n") result.append("=" * 80) result.append("Next Race".center(80)) result.append("=" * 80) nextRace = requests.get("http://ergast.com/api/f1/current/next.json").json()['MRData']['RaceTable']['Races'][0] result.append(f"Round {nextRace['round']}: {nextRace['raceName']}") result.append(f"Taking place @ {nextRace['Circuit']['circuitName']}") result.append(f"P1: {nextRace['FirstPractice']['date']} @ {nextRace['FirstPractice']['time'][:5]}") result.append(f"P2: {nextRace['SecondPractice']['date']} @ {nextRace['SecondPractice']['time'][:5]}") result.append(f"P2: {nextRace['ThirdPractice']['date']} @ {nextRace['ThirdPractice']['time'][:5]}") result.append(f"Qualifying: {nextRace['Qualifying']['date']} @ {nextRace['Qualifying']['time'][:5]}") result.append(f"Final Race: {nextRace['date']} @ {nextRace['time'][:4]}") result.append("\n\n") result.append("=" * 80) result.append("Driver Standings".center(80)) result.append("=" * 80) driverStandings = requests.get("http://ergast.com/api/f1/current/driverStandings.json").json()['MRData']['StandingsTable']['StandingsLists'][0]['DriverStandings'] dsTable = PrettyTable() dsTable.field_names = ["Position", "Driver", "Constructor", "Points", "Wins"] for i in driverStandings: dsTable.add_row([ i['positionText'], f"{unidecode(i['Driver']['givenName'])} {unidecode(i['Driver']['familyName'])} ({i['Driver']['nationality']})", i['Constructors'][0]['name'], i['points'], i['wins'] ]) result.append(dsTable.get_string()) result.append("\n\n") result.append("=" * 80) result.append("Constructor Standings".center(80)) result.append("=" * 80) constructorStandings = requests.get("http://ergast.com/api/f1/current/constructorStandings.json").json()['MRData']['StandingsTable']['StandingsLists'][0]['ConstructorStandings'] csTable = PrettyTable() csTable.field_names = ["Position", "Constructor", "Points", "Wins"] for i in constructorStandings: csTable.add_row([ i['positionText'], i['Constructor']['name'], i['points'], i['wins'] ]) result.append(csTable.get_string()) return result