Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -19,16 +19,32 @@ target_models = {
|
|
19 |
|
20 |
def get_models_data(progress=gr.Progress()):
|
21 |
"""๋ชจ๋ธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (์คํ์ด์ค์ ๋์ผํ ๋ฐฉ์)"""
|
22 |
-
url = "https://huggingface.co/api/models
|
23 |
params = {
|
24 |
-
'
|
25 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
28 |
try:
|
29 |
progress(0, desc="Fetching models data...")
|
30 |
-
response = requests.get(url, params=params)
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
32 |
all_models = response.json()
|
33 |
|
34 |
# ์์ ์ ๋ณด ์ ์ฅ
|
@@ -41,6 +57,9 @@ def get_models_data(progress=gr.Progress()):
|
|
41 |
model['rank'] = model_ranks.get(model['id'], 'N/A')
|
42 |
models.append(model)
|
43 |
|
|
|
|
|
|
|
44 |
# ์์๋ณ๋ก ์ ๋ ฌ
|
45 |
models.sort(key=lambda x: x['rank'])
|
46 |
|
@@ -53,6 +72,7 @@ def get_models_data(progress=gr.Progress()):
|
|
53 |
ids = [model['id'] for model in models]
|
54 |
ranks = [model['rank'] for model in models]
|
55 |
likes = [model.get('likes', 0) for model in models]
|
|
|
56 |
|
57 |
# Y์ถ ๊ฐ์ ๋ฐ์ (1000 - rank + 1)
|
58 |
y_values = [1001 - r for r in ranks]
|
@@ -61,7 +81,8 @@ def get_models_data(progress=gr.Progress()):
|
|
61 |
fig.add_trace(go.Bar(
|
62 |
x=ids,
|
63 |
y=y_values,
|
64 |
-
text=[f"Rank: {r}<br>Likes: {l}"
|
|
|
65 |
textposition='auto',
|
66 |
marker_color='rgb(158,202,225)',
|
67 |
opacity=0.8
|
@@ -69,7 +90,7 @@ def get_models_data(progress=gr.Progress()):
|
|
69 |
|
70 |
fig.update_layout(
|
71 |
title={
|
72 |
-
'text': 'Hugging Face Models
|
73 |
'y':0.95,
|
74 |
'x':0.5,
|
75 |
'xanchor': 'center',
|
@@ -93,7 +114,7 @@ def get_models_data(progress=gr.Progress()):
|
|
93 |
# HTML ์นด๋ ์์ฑ
|
94 |
html_content = """
|
95 |
<div style='padding: 20px; background: #f5f5f5;'>
|
96 |
-
<h2 style='color: #2c3e50;'>Models
|
97 |
<div style='display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;'>
|
98 |
"""
|
99 |
|
@@ -102,6 +123,7 @@ def get_models_data(progress=gr.Progress()):
|
|
102 |
rank = model.get('rank', 'N/A')
|
103 |
likes = model.get('likes', 0)
|
104 |
downloads = model.get('downloads', 0)
|
|
|
105 |
|
106 |
html_content += f"""
|
107 |
<div style='
|
@@ -114,6 +136,7 @@ def get_models_data(progress=gr.Progress()):
|
|
114 |
<h3 style='color: #34495e;'>Rank #{rank} - {model_id}</h3>
|
115 |
<p style='color: #7f8c8d;'>๐ Likes: {likes}</p>
|
116 |
<p style='color: #7f8c8d;'>โฌ๏ธ Downloads: {downloads}</p>
|
|
|
117 |
<a href='{target_models[model_id]}'
|
118 |
target='_blank'
|
119 |
style='
|
@@ -145,9 +168,8 @@ def get_models_data(progress=gr.Progress()):
|
|
145 |
return fig, html_content, df
|
146 |
|
147 |
except Exception as e:
|
148 |
-
|
149 |
-
|
150 |
-
return error_plot, error_html, pd.DataFrame()
|
151 |
|
152 |
# ๊ด์ฌ ์คํ์ด์ค URL ๋ฆฌ์คํธ์ ์ ๋ณด
|
153 |
target_spaces = {
|
|
|
19 |
|
20 |
def get_models_data(progress=gr.Progress()):
|
21 |
"""๋ชจ๋ธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (์คํ์ด์ค์ ๋์ผํ ๋ฐฉ์)"""
|
22 |
+
url = "https://huggingface.co/api/models" # ๊ธฐ๋ณธ API ์๋ํฌ์ธํธ
|
23 |
params = {
|
24 |
+
'full': 'true',
|
25 |
+
'limit': 1000,
|
26 |
+
'sort': 'lastModified', # ์ต์ ์์ผ๋ก ์ ๋ ฌ
|
27 |
+
'direction': -1
|
28 |
+
}
|
29 |
+
|
30 |
+
headers = {
|
31 |
+
'Accept': 'application/json',
|
32 |
+
'User-Agent': 'Mozilla/5.0'
|
33 |
}
|
34 |
|
35 |
+
# API ํ ํฐ์ด ์๋ ๊ฒฝ์ฐ ํค๋์ ์ถ๊ฐ
|
36 |
+
if HF_TOKEN:
|
37 |
+
headers['Authorization'] = f'Bearer {HF_TOKEN}'
|
38 |
+
|
39 |
try:
|
40 |
progress(0, desc="Fetching models data...")
|
41 |
+
response = requests.get(url, params=params, headers=headers)
|
42 |
+
|
43 |
+
if response.status_code != 200:
|
44 |
+
print(f"API ์์ฒญ ์คํจ: {response.status_code}")
|
45 |
+
print(f"Response: {response.text}")
|
46 |
+
return create_error_plot(), "<div>๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ์คํจํ์ต๋๋ค.</div>", pd.DataFrame()
|
47 |
+
|
48 |
all_models = response.json()
|
49 |
|
50 |
# ์์ ์ ๋ณด ์ ์ฅ
|
|
|
57 |
model['rank'] = model_ranks.get(model['id'], 'N/A')
|
58 |
models.append(model)
|
59 |
|
60 |
+
if not models:
|
61 |
+
return create_error_plot(), "<div>์ ํ๋ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.</div>", pd.DataFrame()
|
62 |
+
|
63 |
# ์์๋ณ๋ก ์ ๋ ฌ
|
64 |
models.sort(key=lambda x: x['rank'])
|
65 |
|
|
|
72 |
ids = [model['id'] for model in models]
|
73 |
ranks = [model['rank'] for model in models]
|
74 |
likes = [model.get('likes', 0) for model in models]
|
75 |
+
downloads = [model.get('downloads', 0) for model in models]
|
76 |
|
77 |
# Y์ถ ๊ฐ์ ๋ฐ์ (1000 - rank + 1)
|
78 |
y_values = [1001 - r for r in ranks]
|
|
|
81 |
fig.add_trace(go.Bar(
|
82 |
x=ids,
|
83 |
y=y_values,
|
84 |
+
text=[f"Rank: {r}<br>Likes: {l}<br>Downloads: {d}"
|
85 |
+
for r, l, d in zip(ranks, likes, downloads)],
|
86 |
textposition='auto',
|
87 |
marker_color='rgb(158,202,225)',
|
88 |
opacity=0.8
|
|
|
90 |
|
91 |
fig.update_layout(
|
92 |
title={
|
93 |
+
'text': 'Hugging Face Models Rankings',
|
94 |
'y':0.95,
|
95 |
'x':0.5,
|
96 |
'xanchor': 'center',
|
|
|
114 |
# HTML ์นด๋ ์์ฑ
|
115 |
html_content = """
|
116 |
<div style='padding: 20px; background: #f5f5f5;'>
|
117 |
+
<h2 style='color: #2c3e50;'>Models Rankings</h2>
|
118 |
<div style='display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;'>
|
119 |
"""
|
120 |
|
|
|
123 |
rank = model.get('rank', 'N/A')
|
124 |
likes = model.get('likes', 0)
|
125 |
downloads = model.get('downloads', 0)
|
126 |
+
description = model.get('description', 'No description available')[:200]
|
127 |
|
128 |
html_content += f"""
|
129 |
<div style='
|
|
|
136 |
<h3 style='color: #34495e;'>Rank #{rank} - {model_id}</h3>
|
137 |
<p style='color: #7f8c8d;'>๐ Likes: {likes}</p>
|
138 |
<p style='color: #7f8c8d;'>โฌ๏ธ Downloads: {downloads}</p>
|
139 |
+
<p style='color: #7f8c8d; font-size: 0.9em;'>{description}...</p>
|
140 |
<a href='{target_models[model_id]}'
|
141 |
target='_blank'
|
142 |
style='
|
|
|
168 |
return fig, html_content, df
|
169 |
|
170 |
except Exception as e:
|
171 |
+
print(f"Error in get_models_data: {str(e)}")
|
172 |
+
return create_error_plot(), f"<div>์๋ฌ ๋ฐ์: {str(e)}</div>", pd.DataFrame()
|
|
|
173 |
|
174 |
# ๊ด์ฌ ์คํ์ด์ค URL ๋ฆฌ์คํธ์ ์ ๋ณด
|
175 |
target_spaces = {
|