import gradio as gr import requests import pandas as pd from datetime import datetime, timedelta import os def fetch_games_by_date(date, api_key): url = f"https://api.sportsdata.io/v3/nba/scores/json/GamesByDate/{date}?key={api_key}" response = requests.get(url) if response.status_code == 200: return response.json() else: return None def last_30_days_data(api_key): all_games = [] for days_ago in range(30): date = (datetime.now() - timedelta(days=days_ago)).strftime("%Y-%m-%d") games = fetch_games_by_date(date, api_key) if games: all_games.extend(games) return all_games def fetch_and_display_data(): api_key = os.getenv('NBA_API_KEY') if api_key: games_data = last_30_days_data(api_key) if games_data: df = pd.DataFrame(games_data) csv_file_path = '/tmp/nba_games_last_30_days.csv' df.to_csv(csv_file_path, index=False) return df, csv_file_path else: return "No data available.", None else: return "API Key not set.", None interface = gr.Interface( fn=fetch_and_display_data, inputs=[], outputs=["dataframe", "file"], title="NBA Games Data Fetcher", description="Fetches the last 30 days of NBA games data. Make sure your API key is set in the environment variable 'NBA_API_KEY'." ) interface.launch()