File size: 1,764 Bytes
65a4620 9ad433e 1d9b43f 9ad433e 1d9b43f 9ad433e e9d1eee cd176ed e9d1eee cd176ed e9d1eee ab2c92a |
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 |
import io
import random
from typing import List, Tuple
import aiohttp
import panel as pn
from PIL import Image
from transformers import CLIPModel, CLIPProcessor
pn.extension(design="bootstrap", sizing_mode="stretch_width")
import panel as pn
import pandas as pd
import os
import datetime
import io
from google_sheet import fetch_leaderboard
from google_drive import upload_to_drive
pn.extension()
# File upload widget
file_input = pn.widgets.FileInput(accept='.zip', multiple=False)
# Status message
status = pn.pane.Markdown("")
# Leaderboard display
leaderboard = pn.pane.DataFrame(pd.DataFrame(), width=600)
import tempfile
temp_dir = tempfile.gettempdir()
submission_path = os.path.join(temp_dir, filename)
def submit_file(event):
if file_input.value is None:
status.object = "โ ๏ธ Please upload a .zip file before submitting."
return
try:
drive_file_id = upload_to_drive(submission_path, filename)
status.object = f"โ
Uploaded to Google Drive [File ID: {drive_file_id}]"
except Exception as e:
status.object = f"โ Failed to upload to Google Drive: {e}"
# Update leaderboard
try:
df = fetch_leaderboard()
if not df.empty:
df_sorted = df.sort_values(by="score", ascending=False)
leaderboard.object = df_sorted
else:
leaderboard.object = pd.DataFrame()
except Exception as e:
status.object += f"\nโ ๏ธ Could not load leaderboard: {e}"
submit_button = pn.widgets.Button(name="Submit", button_type="primary")
submit_button.on_click(submit_file)
# Layout
app = pn.Column(
"## ๐ Hackathon Leaderboard",
file_input,
submit_button,
status,
"### Leaderboard",
leaderboard
)
app.servable()
|