Spaces:
Runtime error
Runtime error
File size: 3,499 Bytes
a2d3266 e742cfd a2d3266 9ae94f1 e742cfd 9ae94f1 e742cfd a2d3266 e742cfd 4cc9fb2 a2d3266 4cc9fb2 e742cfd a2d3266 e742cfd 4cc9fb2 e742cfd a2d3266 e742cfd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
import fastf1
import pandas as pd
from fastapi import FastAPI
from fastapi.responses import FileResponse, HTMLResponse
from pydantic import BaseModel
app = FastAPI()
# class Laps(BaseModel):
# Time: pd.Timedelta
# Driver: str
# DriverNumber: str
# LapTime: pd.Timedelta
# LapNumber: int
# Stint: int
# PitOutTime: pd.Timedelta
# PitInTime: pd.Timedelta
# Sector1Time: pd.Timedelta
# Sector2Time: pd.Timedelta
# Sector3Time: pd.Timedelta
# Sector1SessionTime: pd.Timedelta
# Sector2SessionTime: pd.Timedelta
# Sector3SessionTime: pd.Timedelta
# SpeedI1: float
# SpeedI2: float
# SpeedFL: float
# SpeedST: float
# IsPersonalBest: bool
# Compound: str
# TyreLife: float
# FreshTyre: bool
# Team: str
# LapStartTime: pd.Timedelta
# LapStartDate: pd.Timestamp
# TrackStatus: str
# IsAccurate: bool
# # https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic
# class Config:
# arbitrary_types_allowed = True
class Laps(BaseModel):
Time: pd.core.frame.DataFrame
Driver: pd.core.frame.DataFrame
DriverNumber: pd.core.frame.DataFrame
LapTime: pd.core.frame.DataFrame
LapNumber: pd.core.frame.DataFrame
Stint: pd.core.frame.DataFrame
PitOutTime: pd.core.frame.DataFrame
PitInTime: pd.core.frame.DataFrame
Sector1Time: pd.core.frame.DataFrame
Sector2Time: pd.core.frame.DataFrame
Sector3Time: pd.core.frame.DataFrame
Sector1SessionTime: pd.core.frame.DataFrame
Sector2SessionTime: pd.core.frame.DataFrame
Sector3SessionTime: pd.core.frame.DataFrame
SpeedI1: pd.core.frame.DataFrame
SpeedI2: pd.core.frame.DataFrame
SpeedFL: pd.core.frame.DataFrame
SpeedST: pd.core.frame.DataFrame
IsPersonalBest: pd.core.frame.DataFrame
Compound: pd.core.frame.DataFrame
TyreLife: pd.core.frame.DataFrame
FreshTyre: pd.core.frame.DataFrame
Team: pd.core.frame.DataFrame
LapStartTime: pd.core.frame.DataFrame
LapStartDate: pd.core.frame.DataFrame
TrackStatus: pd.core.frame.DataFrame
IsAccurate: pd.core.frame.DataFrame
# https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic
class Config:
arbitrary_types_allowed = True
@app.get("/")
async def root():
return {"message": "Hello World"}
# create a function that returns laps dataframe given year, race ,session from fastf1
@app.get("/{year}/{race}/{session}", response_model=None)
async def get_data(year: int, race: int, session: str) -> any:
f1session = fastf1.get_session(year, race, session)
f1session.load(telemetry=False, weather=False, messages=False)
# Load all laps with telemetry
laps = f1session.laps
laps['Sector1Time'] = laps['Sector1Time'].dt.total_seconds()
laps['Sector2Time'] = laps['Sector2Time'].dt.total_seconds()
laps['Sector3Time'] = laps['Sector3Time'].dt.total_seconds()
laps['LapTime_in_seconds'] = laps['LapTime'].dt.total_seconds()
laps['laptime_sum_sectortimes'] = laps.Sector1Time + \
laps.Sector2Time + laps.Sector3Time
# # convert laps to csv
# laps.to_csv('laps.csv', index=False)
# return laps
# in laps replace NaN with ""
laps = laps.fillna(" ")
return {"laps": laps.to_dict(orient='records')}
# return FileResponse(path='laps.csv', filename='laps.csv')
# return HTMLResponse(content=laps.to_html(), status_code=200)
|