Spaces:
Sleeping
Sleeping
File size: 4,548 Bytes
f61429a 514cd38 f61429a 4805e44 060cebe 059f849 514cd38 4805e44 514cd38 059f849 4805e44 514cd38 d51b0b3 059f849 4805e44 059f849 4805e44 059f849 4805e44 d51b0b3 4805e44 d51b0b3 514cd38 059f849 4805e44 060cebe 4805e44 f61429a 4805e44 d51b0b3 060cebe 514cd38 4805e44 060cebe 4805e44 f61429a 514cd38 059f849 514cd38 d51b0b3 514cd38 f61429a 514cd38 d51b0b3 |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
import requests
import gradio as gr
from datetime import datetime
# ํ
์คํธ๋ฅผ ์ํด Gradio ๊ณต์ ๊ณ์ ์ผ๋ก ์ค์
USERNAME = "gradio"
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 search_spaces():
"""Search for spaces using the Hugging Face search API"""
url = "https://huggingface.co/api/spaces"
headers = {"Accept": "application/json"}
try:
# First, try to get all spaces
response = requests.get(url, headers=headers)
if response.status_code == 200:
all_spaces = response.json()
# Filter spaces by username
user_spaces = [space for space in all_spaces
if space.get('author', '').lower() == USERNAME.lower()]
return user_spaces
except Exception as e:
print(f"Error in search_spaces: {e}")
return []
def get_space_card(space):
"""Generate HTML card for a space"""
space_id = space.get('id', '')
space_name = space_id.split('/')[-1] if space_id else 'Unknown'
return f"""
<div style='border: 1px solid #ddd; padding: 15px; margin: 10px; border-radius: 8px;
background-color: white; box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
transition: transform 0.2s ease-in-out;'
onmouseover='this.style.transform="scale(1.02)"'
onmouseout='this.style.transform="scale(1)"'>
<h3 style='color: #2d2d2d; margin: 0 0 10px 0;'>
<a href='https://huggingface.co/spaces/{space_id}' target='_blank'
style='text-decoration: none; color: #2d2d2d;'>
{space_name}
</a>
</h3>
<p style='margin: 5px 0;'><strong>Author:</strong> {space.get('author', 'Unknown')}</p>
<p style='margin: 5px 0;'><strong>SDK:</strong> {space.get('sdk', 'N/A')}</p>
<p style='margin: 5px 0;'><strong>Likes:</strong> {space.get('likes', 0)} โค๏ธ</p>
<div style='margin-top: 10px;'>
<a href='https://huggingface.co/spaces/{space_id}' target='_blank'
style='background-color: #0084ff; color: white; padding: 5px 10px;
border-radius: 5px; text-decoration: none; display: inline-block;'>
View Space
</a>
</div>
</div>
"""
def get_user_spaces():
# Get spaces for the user
spaces = search_spaces()
if not spaces:
# Try alternative search method
try:
response = requests.get(
f"https://huggingface.co/search/full-text",
params={"q": f"user:{USERNAME} type:space"},
headers={"Accept": "application/json"}
)
if response.status_code == 200:
search_results = response.json()
if 'hits' in search_results:
spaces = search_results['hits']
except Exception as e:
print(f"Error in alternative search: {e}")
if not spaces:
return """
<div style='padding: 20px; text-align: center; color: #666;'>
<h2>No public Spaces found for user: {USERNAME}</h2>
<p>This could be because:</p>
<ul style='list-style: none; padding: 0;'>
<li>The user has no public spaces</li>
<li>The username might be incorrect</li>
<li>There might be an issue with the API</li>
</ul>
</div>
"""
# Create HTML grid layout
html_content = f"""
<div style='padding: 20px; background-color: #f5f5f5;'>
<div style='margin-bottom: 20px;'>
<p style='color: #666; margin: 0;'>Found {len(spaces)} public spaces for {USERNAME}</p>
</div>
<div style='
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
'>
{"".join(get_space_card(space) for space in spaces)}
</div>
</div>
"""
return html_content
# Creating the Gradio interface
app = gr.Interface(
fn=get_user_spaces,
inputs=None,
outputs=gr.HTML(),
title=f"Hugging Face Public Spaces - {USERNAME}",
description=f"Displays public Spaces from {USERNAME}",
theme=gr.themes.Soft(),
css="""
.gradio-container {
max-width: 100% !important;
}
"""
)
# Launch the Gradio app
if __name__ == "__main__":
app.launch() |