openfree commited on
Commit
1f9317b
ยท
verified ยท
1 Parent(s): 43dde8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -11
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/sort/trending" # trending API ์—”๋“œํฌ์ธํŠธ
23
  params = {
24
- 'limit': 1000, # ์ƒ์œ„ 1000๊ฐœ ๋ชจ๋ธ
25
- 'full': 'true'
 
 
 
 
 
 
 
26
  }
27
 
 
 
 
 
28
  try:
29
  progress(0, desc="Fetching models data...")
30
- response = requests.get(url, params=params)
31
- response.raise_for_status()
 
 
 
 
 
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}" for r, l in zip(ranks, likes)],
 
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 Trending Rankings',
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 Trending Rankings</h2>
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
- error_html = f'<div style="color: red; padding: 20px;">Error: {str(e)}</div>'
149
- error_plot = create_error_plot()
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 = {