openfree commited on
Commit
76b2e91
ยท
verified ยท
1 Parent(s): 44a57dc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -69
app.py CHANGED
@@ -393,31 +393,40 @@ def get_all_models(limit=1000):
393
  return all_models[:limit]
394
 
395
  def get_models_data(progress=gr.Progress()):
396
- """๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ"""
397
  try:
398
  progress(0, desc="Fetching models...")
399
 
400
- # ๋ชจ๋ธ ๊ฐ€์ ธ์˜ค๊ธฐ
401
  all_global_models = get_all_models(limit=1000)
402
- print(f"Actually fetched models count: {len(all_global_models)}")
 
 
 
 
 
 
 
 
 
 
 
403
 
404
  # API ์‘๋‹ต ์ˆœ์„œ๋ฅผ ์ˆœ์œ„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์œ„ ๋งต ์ƒ์„ฑ
405
  rank_map = {}
406
- for rank, model in enumerate(all_global_models, 1):
407
  model_id = model.get('id', '').strip()
408
  rank_map[model_id] = {
409
  'rank': rank,
410
  'likes': model.get('likes', 0),
411
  'downloads': model.get('downloads', 0),
412
- 'title': model.get('title', 'No Title')
 
413
  }
414
- print(f"Rank {rank}: {model_id}")
415
 
416
  # target_models์˜ ์ˆœ์œ„ ํ™•์ธ ๋ฐ ์ •๋ณด ์ˆ˜์ง‘
417
  filtered_models = []
418
  for model_id in target_models.keys():
419
  try:
420
- # ๊ฐœ๋ณ„ ๋ชจ๋ธ API ํ˜ธ์ถœ
421
  normalized_id = model_id.strip('/')
422
  model_url_api = f"https://huggingface.co/api/models/{normalized_id}"
423
  response = requests.get(
@@ -428,8 +437,6 @@ def get_models_data(progress=gr.Progress()):
428
  if response.status_code == 200:
429
  model_data = response.json()
430
  api_id = model_data.get('id', '').strip()
431
-
432
- # API ์‘๋‹ต ์ˆœ์„œ์—์„œ ์ˆœ์œ„ ์ฐพ๊ธฐ
433
  rank_info = rank_map.get(api_id)
434
 
435
  model_info = {
@@ -437,17 +444,23 @@ def get_models_data(progress=gr.Progress()):
437
  'global_rank': rank_info['rank'] if rank_info else 'Not in top 1000',
438
  'downloads': model_data.get('downloads', 0),
439
  'likes': model_data.get('likes', 0),
440
- 'title': model_data.get('title', 'No Title')
 
441
  }
442
  filtered_models.append(model_info)
443
- print(f"Model {model_id}: Rank={model_info['global_rank']}, Downloads={model_info['downloads']}, Likes={model_info['likes']}")
 
 
 
 
444
  else:
445
  filtered_models.append({
446
  'id': model_id,
447
  'global_rank': 'Not in top 1000',
448
  'downloads': 0,
449
  'likes': 0,
450
- 'title': 'No Title'
 
451
  })
452
  except Exception as e:
453
  print(f"Error processing {model_id}: {str(e)}")
@@ -456,63 +469,11 @@ def get_models_data(progress=gr.Progress()):
456
  'global_rank': 'Not in top 1000',
457
  'downloads': 0,
458
  'likes': 0,
459
- 'title': 'No Title'
 
460
  })
461
-
462
- # ์ˆœ์œ„๋กœ ์ •๋ ฌ
463
- filtered_models.sort(key=lambda x: float('inf') if isinstance(x['global_rank'], str) else x['global_rank'])
464
-
465
- progress(0.3, desc="Creating visualization...")
466
-
467
- # ์‹œ๊ฐํ™” ์ƒ์„ฑ
468
- fig = go.Figure()
469
-
470
- # ์ˆœ์œ„๊ถŒ ๋‚ด ๋ชจ๋ธ๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์‹œ๊ฐํ™”
471
- valid_models = [m for m in filtered_models if isinstance(m['global_rank'], (int, float))]
472
-
473
- if valid_models:
474
- ids = [m['id'] for m in valid_models]
475
- ranks = [m['global_rank'] for m in valid_models]
476
- likes = [m['likes'] for m in valid_models]
477
- downloads = [m['downloads'] for m in valid_models]
478
-
479
- # Y์ถ• ๊ฐ’์„ ๋ฐ˜์ „ (๋†’์€ ์ˆœ์œ„๊ฐ€ ์œ„๋กœ ๊ฐ€๋„๋ก)
480
- y_values = [1001 - r for r in ranks]
481
-
482
- fig.add_trace(go.Bar(
483
- x=ids,
484
- y=y_values,
485
- text=[f"Global Rank: #{r}<br>Downloads: {format(d, ',')}<br>Likes: {format(l, ',')}"
486
- for r, d, l in zip(ranks, downloads, likes)],
487
- textposition='auto',
488
- marker_color='rgb(158,202,225)',
489
- opacity=0.8
490
- ))
491
-
492
- fig.update_layout(
493
- title={
494
- 'text': 'Hugging Face Models Global Rankings',
495
- 'y':0.95,
496
- 'x':0.5,
497
- 'xanchor': 'center',
498
- 'yanchor': 'top'
499
- },
500
- xaxis_title='Model ID',
501
- yaxis_title='Global Rank',
502
- yaxis=dict(
503
- ticktext=[f"#{i}" for i in range(1, 1001, 50)],
504
- tickvals=[1001 - i for i in range(1, 1001, 50)],
505
- range=[0, 1000]
506
- ),
507
- height=800,
508
- showlegend=False,
509
- template='plotly_white',
510
- xaxis_tickangle=-45
511
- )
512
-
513
- progress(0.6, desc="Creating model cards...")
514
-
515
- # HTML ์นด๋“œ ์ƒ์„ฑ
516
  html_content = """
517
  <div style='padding: 20px; background: #f5f5f5;'>
518
  <h2 style='color: #2c3e50;'>Models Global Rankings</h2>
@@ -521,6 +482,7 @@ def get_models_data(progress=gr.Progress()):
521
 
522
  for model in filtered_models:
523
  rank_display = f"Global Rank #{model['global_rank']}" if isinstance(model['global_rank'], (int, float)) else "Not in top 1000"
 
524
 
525
  html_content += f"""
526
  <div style='
@@ -532,6 +494,7 @@ def get_models_data(progress=gr.Progress()):
532
  '>
533
  <h3 style='color: #34495e;'>{rank_display}</h3>
534
  <h4 style='color: #2c3e50;'>{model['id']}</h4>
 
535
  <p style='color: #7f8c8d;'>โฌ‡๏ธ Downloads: {format(model['downloads'], ',')}</p>
536
  <p style='color: #7f8c8d;'>๐Ÿ‘ Likes: {format(model['likes'], ',')}</p>
537
  <a href='{target_models[model['id']]}'
@@ -552,13 +515,14 @@ def get_models_data(progress=gr.Progress()):
552
 
553
  html_content += "</div></div>"
554
 
555
- # ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ
556
  df = pd.DataFrame([{
557
  'Global Rank': f"#{m['global_rank']}" if isinstance(m['global_rank'], (int, float)) else m['global_rank'],
558
  'Model ID': m['id'],
559
  'Title': m['title'],
560
  'Downloads': format(m['downloads'], ','),
561
  'Likes': format(m['likes'], ','),
 
562
  'URL': target_models[m['id']]
563
  } for m in filtered_models])
564
 
 
393
  return all_models[:limit]
394
 
395
  def get_models_data(progress=gr.Progress()):
 
396
  try:
397
  progress(0, desc="Fetching models...")
398
 
399
+ # ์ผ๋ฐ˜ ๋ชจ๋ธ๊ณผ Korea ๊ด€๋ จ ๋ชจ๋ธ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ค๊ธฐ
400
  all_global_models = get_all_models(limit=1000)
401
+ korea_models = get_korea_models() # Korea ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ถ”๊ฐ€
402
+
403
+ # ๋ชจ๋“  ๋ชจ๋ธ ํ†ตํ•ฉ (์ค‘๋ณต ์ œ๊ฑฐ)
404
+ all_models = all_global_models.copy()
405
+ existing_ids = {model.get('id', '') for model in all_global_models}
406
+
407
+ for korea_model in korea_models:
408
+ if korea_model.get('id', '') not in existing_ids:
409
+ all_models.append(korea_model)
410
+ existing_ids.add(korea_model.get('id', ''))
411
+
412
+ print(f"Total models (including Korea search): {len(all_models)}")
413
 
414
  # API ์‘๋‹ต ์ˆœ์„œ๋ฅผ ์ˆœ์œ„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์œ„ ๋งต ์ƒ์„ฑ
415
  rank_map = {}
416
+ for rank, model in enumerate(all_models, 1):
417
  model_id = model.get('id', '').strip()
418
  rank_map[model_id] = {
419
  'rank': rank,
420
  'likes': model.get('likes', 0),
421
  'downloads': model.get('downloads', 0),
422
+ 'title': model.get('title', 'No Title'),
423
+ 'is_korea': model in korea_models # Korea ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—ฌ๋ถ€ ํ‘œ์‹œ
424
  }
 
425
 
426
  # target_models์˜ ์ˆœ์œ„ ํ™•์ธ ๋ฐ ์ •๋ณด ์ˆ˜์ง‘
427
  filtered_models = []
428
  for model_id in target_models.keys():
429
  try:
 
430
  normalized_id = model_id.strip('/')
431
  model_url_api = f"https://huggingface.co/api/models/{normalized_id}"
432
  response = requests.get(
 
437
  if response.status_code == 200:
438
  model_data = response.json()
439
  api_id = model_data.get('id', '').strip()
 
 
440
  rank_info = rank_map.get(api_id)
441
 
442
  model_info = {
 
444
  'global_rank': rank_info['rank'] if rank_info else 'Not in top 1000',
445
  'downloads': model_data.get('downloads', 0),
446
  'likes': model_data.get('likes', 0),
447
+ 'title': model_data.get('title', 'No Title'),
448
+ 'is_korea': rank_info.get('is_korea', False) if rank_info else False
449
  }
450
  filtered_models.append(model_info)
451
+
452
+ # Korea ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์ธ ๊ฒฝ์šฐ ํ‘œ์‹œ
453
+ korea_status = "๐Ÿ‡ฐ๐Ÿ‡ท" if model_info['is_korea'] else ""
454
+ print(f"Model {model_id}: Rank={model_info['global_rank']}, Downloads={model_info['downloads']}, Likes={model_info['likes']} {korea_status}")
455
+
456
  else:
457
  filtered_models.append({
458
  'id': model_id,
459
  'global_rank': 'Not in top 1000',
460
  'downloads': 0,
461
  'likes': 0,
462
+ 'title': 'No Title',
463
+ 'is_korea': False
464
  })
465
  except Exception as e:
466
  print(f"Error processing {model_id}: {str(e)}")
 
469
  'global_rank': 'Not in top 1000',
470
  'downloads': 0,
471
  'likes': 0,
472
+ 'title': 'No Title',
473
+ 'is_korea': False
474
  })
475
+
476
+ # HTML ์นด๋“œ์— Korea ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ‘œ์‹œ ์ถ”๊ฐ€
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
477
  html_content = """
478
  <div style='padding: 20px; background: #f5f5f5;'>
479
  <h2 style='color: #2c3e50;'>Models Global Rankings</h2>
 
482
 
483
  for model in filtered_models:
484
  rank_display = f"Global Rank #{model['global_rank']}" if isinstance(model['global_rank'], (int, float)) else "Not in top 1000"
485
+ korea_badge = "๐Ÿ‡ฐ๐Ÿ‡ท Korea Search Result" if model['is_korea'] else ""
486
 
487
  html_content += f"""
488
  <div style='
 
494
  '>
495
  <h3 style='color: #34495e;'>{rank_display}</h3>
496
  <h4 style='color: #2c3e50;'>{model['id']}</h4>
497
+ <p style='color: #e74c3c;'>{korea_badge}</p>
498
  <p style='color: #7f8c8d;'>โฌ‡๏ธ Downloads: {format(model['downloads'], ',')}</p>
499
  <p style='color: #7f8c8d;'>๐Ÿ‘ Likes: {format(model['likes'], ',')}</p>
500
  <a href='{target_models[model['id']]}'
 
515
 
516
  html_content += "</div></div>"
517
 
518
+ # ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— Korea ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ ์ถ”๊ฐ€
519
  df = pd.DataFrame([{
520
  'Global Rank': f"#{m['global_rank']}" if isinstance(m['global_rank'], (int, float)) else m['global_rank'],
521
  'Model ID': m['id'],
522
  'Title': m['title'],
523
  'Downloads': format(m['downloads'], ','),
524
  'Likes': format(m['likes'], ','),
525
+ 'Korea Search': '๐Ÿ‡ฐ๐Ÿ‡ท' if m['is_korea'] else '',
526
  'URL': target_models[m['id']]
527
  } for m in filtered_models])
528