import gradio as gr import pandas as pd from themes import IndonesiaTheme def load_data(status_filter="All", keyword=""): df = pd.read_csv("https://huggingface.co/datasets/Deddy/leaderboard-dataset/raw/main/leaderboard.csv") if status_filter != "All": df = df[df['status'].str.contains(status_filter, case=False, na=False)] if keyword.strip(): df = df[df['name'].str.contains(keyword, case=False, na=False)] df = df.sort_values("likes", ascending=False).head(100).reset_index(drop=True) # Kolom Visit tetap df["🔗 Visit"] = df["link"].apply(lambda url: f"🌐 Visit") # Kolom Name: bold, warna emas untuk top 10, emoji piala untuk top 3 def decorate_name(row): i = row.name + 1 # row.name = index mulai dari 0 name = f"{row['name']}" medal = "" if i == 1: medal = "👑 " elif i == 2: medal = "🏆 " elif i == 3: medal = "🏅 " if i <= 10: # Emas (#FFD700) return f"{medal}{name}" return f"{name}" df["decorated_name"] = df.apply(decorate_name, axis=1) # Kolom Status: warna dinamis def format_status(s): if isinstance(s, str) and "running" in s.lower(): return f"{s}" else: return f"{s}" df["status_fmt"] = df["status"].apply(format_status) # Susun ulang kolom: No, Name, dst df_final = pd.DataFrame() df_final["No"] = range(1, len(df) + 1) df_final["📛 Name"] = df["decorated_name"] df_final["👤 Author"] = df["author"] df_final["📝 Description"] = df["desc"] df_final["❤️ Likes"] = df["likes"] df_final["🕒 Updated"] = df["updated"] df_final["⚙️ Status"] = df["status_fmt"] df_final["🔗 Visit"] = df["🔗 Visit"] return df_final def render_html_table(status, keyword): df = load_data(status, keyword) html_table = df.to_html(escape=False, index=False, classes="styled-table") return f""" {html_table} """ css = "" # CSS sudah di-inject via render_html_table with gr.Blocks(theme=IndonesiaTheme()) as demo: gr.Markdown("""
🚀 100 SPACES TERPOPULER HUGGING FACE! - ⏰ HOURLY UPDATE!! 🚀
Tersaring dari ribuan aplikasi, hanya yang terbaik, terfavorit, dan paling inovatif yang masuk leaderboard ini!
Siapkah kamu menemukan Space AI idamanmu hari ini?
""") with gr.Row(): with gr.Column(elem_id="col-left"): status_choice = gr.Dropdown(["All", "Running", "Runtime", "Build", "Sleeping"], label="🎛️ Filter Status", value="All") with gr.Column(elem_id="col-mid"): keyword_input = gr.Textbox(label="🔍 Search by Name", placeholder="e.g. llama, tts, image") with gr.Column(elem_id="col-bott"): output_table = gr.HTML(label="Leaderboard Table") gr.Markdown("""
🎉 Selamat untuk seluruh Space yang masuk 100 besar! Kalian membanggakan komunitas AI Dunia! 🚀🔥
Terus berkarya, jangan berhenti berinovasi! 💪🌟🥳
""") gr.Button("🔄 Refresh").click(fn=render_html_table, inputs=[status_choice, keyword_input], outputs=output_table) gr.Markdown("#### Made with ❤️ by Deddy | ⏰ HF Most Popular Space Leaderboard", elem_id="footer") # Inisialisasi tampilan awal output_table.value = render_html_table("All", "") # Jalankan aplikasi Gradio (local/web) demo.queue(api_open=False).launch(show_api=False)