ZeroGPu-Check / app.py
rahul7star's picture
Update app.py
86bfe51 verified
import os
import gradio as gr
from huggingface_hub import HfApi
HF_TOKEN = os.getenv("HF_TOKEN")
api = HfApi(token=HF_TOKEN)
def scan_spaces_detailed(username: str):
"""
Scan all Spaces for a user and display metadata in table form.
Sort all ZeroGPU spaces first.
"""
try:
spaces = api.list_spaces(author=username, token=HF_TOKEN)
if not spaces:
return [["No Spaces found", "", "", ""]]
results = []
for space in spaces:
try:
info = api.space_info(space.id, token=HF_TOKEN)
status = getattr(info, "status", "unknown")
tags = getattr(info, "tags", [])
# Determine hardware type
runtime = getattr(info, "runtime", None)
if runtime:
requested_hw = getattr(runtime, "requested_hardware", None)
if requested_hw and requested_hw.lower().startswith("zero"):
hardware = "ZeroGPU"
else:
hardware = "GPU"
else:
hardware_field = getattr(info, "hardware", None)
if hardware_field:
hardware = "ZeroGPU" if all("cpu" in h.lower() for h in hardware_field) else "GPU"
else:
hardware = "ZeroGPU" if "cpu" in tags else "GPU"
results.append([
space.id,
status,
hardware,
", ".join(tags)
])
except Exception as e:
results.append([
space.id,
f"Error retrieving info: {e}",
"Unknown",
""
])
# Sort ZeroGPU first
results.sort(key=lambda x: 0 if x[2] == "ZeroGPU" else 1)
return results
except Exception as e:
return [[f"Error: {e}", "", "", ""]]
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## πŸ” Hugging Face Spaces ZeroGPU Scanner (Tabular View)")
with gr.Row():
username_input = gr.Textbox(label="Hugging Face Username", value="rahul7star")
scan_button = gr.Button("Scan Spaces")
output_table = gr.Dataframe(
headers=["Space ID", "Status", "Hardware", "Tags"],
datatype=["str", "str", "str", "str"],
interactive=False,
wrap=True
)
scan_button.click(scan_spaces_detailed, inputs=username_input, outputs=output_table)
demo.launch()