openfree commited on
Commit
fa9bc0c
·
verified ·
1 Parent(s): 41d9eba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -31
app.py CHANGED
@@ -17,17 +17,16 @@ target_models = {
17
  "seawolf2357/flux-lora-car-rolls-royce": "https://huggingface.co/seawolf2357/flux-lora-car-rolls-royce"
18
  }
19
 
20
- def get_models_data(sort_type="trending", progress=gr.Progress()):
21
  """모델 데이터 가져오기"""
22
- url = "https://huggingface.co/api/models"
23
  params = {
24
- 'full': 'true',
25
- 'limit': 1000, # 상위 1000개 모델
26
- 'sort': 'downloads' if sort_type == "modes" else 'lastModified'
27
  }
28
 
29
  try:
30
- progress(0, desc=f"Fetching {sort_type} models data...")
31
  response = requests.get(url, params=params)
32
  response.raise_for_status()
33
  all_models = response.json()
@@ -53,24 +52,24 @@ def get_models_data(sort_type="trending", progress=gr.Progress()):
53
  # 데이터 준비
54
  ids = [model['id'] for model in models]
55
  ranks = [model['rank'] for model in models]
56
- downloads = [model.get('downloads', 0) for model in models]
57
 
58
- # Y축 값을 반전 (1000 - rank + 1)
59
  y_values = [1001 - r for r in ranks]
60
 
61
  # 막대 그래프 생성
62
  fig.add_trace(go.Bar(
63
  x=ids,
64
  y=y_values,
65
- text=[f"Rank: {r}<br>Downloads: {d}" for r, d in zip(ranks, downloads)],
66
  textposition='auto',
67
- marker_color='rgb(255,127,14)',
68
  opacity=0.8
69
  ))
70
 
71
  fig.update_layout(
72
  title={
73
- 'text': f'Hugging Face Models {sort_type.title()} Rankings (Top 1000)',
74
  'y':0.95,
75
  'x':0.5,
76
  'xanchor': 'center',
@@ -92,17 +91,17 @@ def get_models_data(sort_type="trending", progress=gr.Progress()):
92
  progress(0.6, desc="Creating model cards...")
93
 
94
  # HTML 카드 생성
95
- html_content = f"""
96
  <div style='padding: 20px; background: #f5f5f5;'>
97
- <h2 style='color: #2c3e50;'>Model {sort_type.title()} Rankings</h2>
98
  <div style='display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;'>
99
  """
100
 
101
  for model in models:
102
  model_id = model.get('id', '')
103
  rank = model.get('rank', 'N/A')
104
- downloads = model.get('downloads', 0)
105
  likes = model.get('likes', 0)
 
106
 
107
  html_content += f"""
108
  <div style='
@@ -113,14 +112,14 @@ def get_models_data(sort_type="trending", progress=gr.Progress()):
113
  transition: transform 0.2s;
114
  '>
115
  <h3 style='color: #34495e;'>Rank #{rank} - {model_id}</h3>
116
- <p style='color: #7f8c8d;'>⬇️ Downloads: {downloads}</p>
117
  <p style='color: #7f8c8d;'>👍 Likes: {likes}</p>
 
118
  <a href='{target_models[model_id]}'
119
  target='_blank'
120
  style='
121
  display: inline-block;
122
  padding: 8px 16px;
123
- background: #e67e22;
124
  color: white;
125
  text-decoration: none;
126
  border-radius: 5px;
@@ -137,8 +136,8 @@ def get_models_data(sort_type="trending", progress=gr.Progress()):
137
  df = pd.DataFrame([{
138
  'Rank': model.get('rank', 'N/A'),
139
  'Model ID': model.get('id', ''),
140
- 'Downloads': model.get('downloads', 'N/A'),
141
  'Likes': model.get('likes', 'N/A'),
 
142
  'URL': target_models[model.get('id', '')]
143
  } for model in models])
144
 
@@ -538,17 +537,12 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
538
  실시간으로 Hugging Face의 Spaces와 Models 순위를 분석합니다.
539
  """)
540
 
541
- with gr.Tab("Trending Rankings"):
542
  trending_plot = gr.Plot()
543
  trending_info = gr.HTML()
544
  trending_df = gr.DataFrame()
545
 
546
- with gr.Tab("Most Liked Rankings"):
547
- modes_plot = gr.Plot()
548
- modes_info = gr.HTML()
549
- modes_df = gr.DataFrame()
550
-
551
- with gr.Tab("Models Rankings"):
552
  models_plot = gr.Plot()
553
  models_info = gr.HTML()
554
  models_df = gr.DataFrame()
@@ -557,26 +551,22 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
557
 
558
  def refresh_all_data():
559
  trending_results = get_spaces_data("trending")
560
- modes_results = get_spaces_data("modes")
561
- models_results = get_models_data("trending")
562
- return [*trending_results, *modes_results, *models_results]
563
 
564
  refresh_btn.click(
565
  refresh_all_data,
566
  outputs=[
567
  trending_plot, trending_info, trending_df,
568
- modes_plot, modes_info, modes_df,
569
  models_plot, models_info, models_df
570
  ]
571
  )
572
 
573
  # 초기 데이터 로드
574
  trending_results = get_spaces_data("trending")
575
- modes_results = get_spaces_data("modes")
576
- models_results = get_models_data("trending")
577
 
578
  trending_plot.value, trending_info.value, trending_df.value = trending_results
579
- modes_plot.value, modes_info.value, modes_df.value = modes_results
580
  models_plot.value, models_info.value, models_df.value = models_results
581
 
582
  # Gradio 앱 실행
 
17
  "seawolf2357/flux-lora-car-rolls-royce": "https://huggingface.co/seawolf2357/flux-lora-car-rolls-royce"
18
  }
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,
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()
 
52
  # 데이터 준비
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축 값을 반전
58
  y_values = [1001 - r for r in ranks]
59
 
60
  # 막대 그래프 생성
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
68
  ))
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',
 
91
  progress(0.6, desc="Creating model cards...")
92
 
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
 
100
  for model in models:
101
  model_id = model.get('id', '')
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='
 
112
  transition: transform 0.2s;
113
  '>
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='
120
  display: inline-block;
121
  padding: 8px 16px;
122
+ background: #3498db;
123
  color: white;
124
  text-decoration: none;
125
  border-radius: 5px;
 
136
  df = pd.DataFrame([{
137
  'Rank': model.get('rank', 'N/A'),
138
  'Model ID': model.get('id', ''),
 
139
  'Likes': model.get('likes', 'N/A'),
140
+ 'Downloads': model.get('downloads', 'N/A'),
141
  'URL': target_models[model.get('id', '')]
142
  } for model in models])
143
 
 
537
  실시간으로 Hugging Face의 Spaces와 Models 순위를 분석합니다.
538
  """)
539
 
540
+ with gr.Tab("Spaces Trending"):
541
  trending_plot = gr.Plot()
542
  trending_info = gr.HTML()
543
  trending_df = gr.DataFrame()
544
 
545
+ with gr.Tab("Models Trending"):
 
 
 
 
 
546
  models_plot = gr.Plot()
547
  models_info = gr.HTML()
548
  models_df = gr.DataFrame()
 
551
 
552
  def refresh_all_data():
553
  trending_results = get_spaces_data("trending")
554
+ models_results = get_models_data()
555
+ return [*trending_results, *models_results]
 
556
 
557
  refresh_btn.click(
558
  refresh_all_data,
559
  outputs=[
560
  trending_plot, trending_info, trending_df,
 
561
  models_plot, models_info, models_df
562
  ]
563
  )
564
 
565
  # 초기 데이터 로드
566
  trending_results = get_spaces_data("trending")
567
+ models_results = get_models_data()
 
568
 
569
  trending_plot.value, trending_info.value, trending_df.value = trending_results
 
570
  models_plot.value, models_info.value, models_df.value = models_results
571
 
572
  # Gradio 앱 실행