import gradio as gr import pandas as pd import requests import io from datetime import datetime # csv file CSV_URL = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSFclK2ikmy-v5gdrSPR20mOU_CUEO2QOnkYMvuxTx8wyP0VHxP_29JYHhnRvJbg_SWgkwnOHolRPPh/pub?output=csv" # fetch data from google sheets def fetch_leaderboard_data(): try: response = requests.get(CSV_URL) response.raise_for_status() data = pd.read_csv(io.StringIO(response.text)) # Normalize column names (lowercase & strip spaces) data.columns = data.columns.str.strip().str.lower() # Ensure "Rank" is treated as a number for sorting if 'rank' in data.columns: data['rank'] = pd.to_numeric(data['rank'], errors='coerce') # Handle date parsing (optional) if 'date and time' in data.columns: data['date and time'] = pd.to_datetime(data['date and time'], errors='coerce') # Sort by rank (ascending order) data = data.sort_values(by='rank', ascending=True) # Capitalize column names before returning data.columns = data.columns.str.title() return data except Exception as e: print(f"Error fetching data: {e}") return pd.DataFrame({"Error": ["Unable to fetch data"]}) # title for the leaderboard title = """

IEEE Low-Power Computer Vision Challenge

2025 CVPR WORKSHOP
""" description = """

Important: The leaderboard only shows results from registered teams. Only the last submission from each team in the previous day will be evaluated.

Can't find your submission? Check Failed Jobs.

""" # gradio app def create_gradio_app(): with gr.Blocks(theme="gradio/soft") as app: # gr.HTML(title) # gr.HTML(description) with gr.Column(): refresh_button = gr.Button("Refresh Leaderboard") leaderboard = gr.DataFrame( value=fetch_leaderboard_data(), interactive=False, label="Leaderboard", ) refresh_button.click(lambda: fetch_leaderboard_data(), outputs=leaderboard) return app # launch gradio app def run_gradio_app(): app = create_gradio_app() app.launch(server_name="0.0.0.0", server_port=7860, share=True) if __name__ == "__main__": run_gradio_app()