import os import requests import gradio as gr from datetime import datetime # Hugging Face Token HF_TOKEN = os.getenv("HF_TOKEN") USERNAME = "openfree" # 특정 사용자 ID 설정 def format_timestamp(timestamp): if timestamp: dt = datetime.fromisoformat(timestamp.replace('Z', '+00:00')) return dt.strftime('%Y-%m-%d %H:%M') return 'N/A' def get_space_card(space): """Generate HTML card for a space""" space_id = space.get('id', '').split('/')[-1] return f"""

{space_id}

Space ID: {space_id}

SDK: {space.get('sdk', 'N/A')}

Status: {space.get('status', 'N/A')}

Created: {format_timestamp(space.get("createdAt"))}

Updated: {format_timestamp(space.get("updatedAt"))}

""" def get_user_spaces(): if not HF_TOKEN: return "Error: Hugging Face token not found." headers = {"Authorization": f"Bearer {HF_TOKEN}"} # Get all spaces and filter by username response = requests.get( "https://huggingface.co/api/spaces", headers=headers, params={"author": USERNAME} # Filter by author ) if response.status_code != 200: return f"Error: Failed to fetch spaces (Status Code: {response.status_code})" spaces = response.json() # Filter spaces for the specific user user_spaces = [space for space in spaces if space.get('author', '') == USERNAME] if not user_spaces: return "No Spaces found for this user." # Create HTML grid layout html_content = f"""
{"".join(get_space_card(space) for space in user_spaces)}
""" return html_content # Creating the Gradio interface app = gr.Interface( fn=get_user_spaces, inputs=None, outputs=gr.HTML(), title=f"Hugging Face Spaces Dashboard - {USERNAME}", description=f"Displays {USERNAME}'s Hugging Face Spaces in a grid layout", theme=gr.themes.Soft(), css=""" .gradio-container { max-width: 100% !important; } """ ) # Launch the Gradio app if __name__ == "__main__": app.launch()