openfree commited on
Commit
fcb56a6
Β·
verified Β·
1 Parent(s): 2f8cbca

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -22
app.py CHANGED
@@ -1195,7 +1195,8 @@ def create_interface():
1195
  datasets_gallery = gr.HTML()
1196
  datasets_status = gr.Markdown("Loading...")
1197
 
1198
- # 뢄석 νƒ­ μˆ˜μ •
 
1199
  with gr.Tab("πŸ” Top 24 Spaces Analysis"):
1200
  with gr.Row(elem_classes="search-sort-container"):
1201
  analysis_refresh_btn = gr.Button(
@@ -1203,20 +1204,20 @@ def create_interface():
1203
  variant="primary",
1204
  elem_classes="refresh-btn"
1205
  )
1206
-
1207
- # νŽΈμ§‘ κ°€λŠ₯ν•œ 인트둜 ν…μŠ€νŠΈ
1208
  intro_text = gr.Textbox(
1209
  value="μ•ˆλ…•ν•˜μ„Έμš”. 맀일 κΈ€λ‘œλ²Œ μ΅œμ‹  AI 인기 νŠΈλ Œλ“œ μ„œλΉ„μŠ€λ₯Ό μ•Œμ•„λ³΄λŠ” '데일리 AI νŠΈλ Œλ”©' λ‰΄μŠ€μž…λ‹ˆλ‹€. 였늘의 ν—ˆκΉ…νŽ˜μ΄μŠ€ 인기 μˆœμœ„ 1μœ„λΆ€ν„° 24μœ„κΉŒμ§€, 뢄석과 핡심 λ‚΄μš©μ„ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.",
1210
  label="인트둜 ν…μŠ€νŠΈ",
1211
  lines=4
1212
  )
1213
-
1214
- # 24개의 νŽΈμ§‘ κ°€λŠ₯ν•œ ν…μŠ€νŠΈ λ°•μŠ€λ₯Ό 담을 μ»¨ν…Œμ΄λ„ˆ
1215
  with gr.Column(elem_id="analysis-container"):
1216
  analysis_boxes = [gr.Textbox(label=f"Space #{i+1}", lines=3) for i in range(24)]
1217
  analysis_status = gr.Markdown()
1218
-
1219
- # λΉ„λ””μ˜€ 생성 μ„Ήμ…˜
1220
  with gr.Row():
1221
  generate_btn = gr.Button(
1222
  "🎬 μ˜μƒ 생성",
@@ -1225,18 +1226,6 @@ def create_interface():
1225
  )
1226
  video_output = gr.Video(label="μƒμ„±λœ μ˜μƒ")
1227
 
1228
- def on_analyze(progress=gr.Progress()):
1229
- """뢄석 μ‹€ν–‰ 및 ν…μŠ€νŠΈλ°•μŠ€ μ—…λ°μ΄νŠΈ"""
1230
- texts = create_editable_space_analysis(progress)
1231
- # μ •ν™•νžˆ 24개의 값을 λ°˜ν™˜
1232
- if len(texts) < 24:
1233
- texts.extend(["뢄석 쀀비쀑..." for _ in range(24 - len(texts))])
1234
- return texts[:24] # μ •ν™•νžˆ 24개 λ°˜ν™˜
1235
-
1236
- def on_generate_video(intro, *texts, progress=gr.Progress()):
1237
- all_texts = [intro] + list(texts)
1238
- return generate_video(all_texts, progress)
1239
-
1240
 
1241
 
1242
  # Event handlers
@@ -1296,7 +1285,7 @@ def create_interface():
1296
  outputs=[datasets_gallery, datasets_status]
1297
  )
1298
 
1299
- # 이벀트 ν•Έλ“€λŸ¬ μ—°κ²°
1300
  analysis_refresh_btn.click(
1301
  fn=on_analyze,
1302
  outputs=analysis_boxes
@@ -1308,8 +1297,6 @@ def create_interface():
1308
  outputs=video_output
1309
  )
1310
 
1311
-
1312
-
1313
  # 초기 데이터 λ‘œλ“œ
1314
  interface.load(
1315
  fn=get_trending_spaces,
@@ -1333,6 +1320,65 @@ def create_interface():
1333
 
1334
  return interface
1335
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1336
  if __name__ == "__main__":
1337
  try:
1338
  CACHE_DIR.mkdir(exist_ok=True)
 
1195
  datasets_gallery = gr.HTML()
1196
  datasets_status = gr.Markdown("Loading...")
1197
 
1198
+
1199
+ # 뢄석 νƒ­ μˆ˜μ •
1200
  with gr.Tab("πŸ” Top 24 Spaces Analysis"):
1201
  with gr.Row(elem_classes="search-sort-container"):
1202
  analysis_refresh_btn = gr.Button(
 
1204
  variant="primary",
1205
  elem_classes="refresh-btn"
1206
  )
1207
+
1208
+ # νŽΈμ§‘ κ°€λŠ₯ν•œ 인트둜 ν…μŠ€νŠΈ
1209
  intro_text = gr.Textbox(
1210
  value="μ•ˆλ…•ν•˜μ„Έμš”. 맀일 κΈ€λ‘œλ²Œ μ΅œμ‹  AI 인기 νŠΈλ Œλ“œ μ„œλΉ„μŠ€λ₯Ό μ•Œμ•„λ³΄λŠ” '데일리 AI νŠΈλ Œλ”©' λ‰΄μŠ€μž…λ‹ˆλ‹€. 였늘의 ν—ˆκΉ…νŽ˜μ΄μŠ€ 인기 μˆœμœ„ 1μœ„λΆ€ν„° 24μœ„κΉŒμ§€, 뢄석과 핡심 λ‚΄μš©μ„ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.",
1211
  label="인트둜 ν…μŠ€νŠΈ",
1212
  lines=4
1213
  )
1214
+
1215
+ # 24개의 νŽΈμ§‘ κ°€λŠ₯ν•œ ν…μŠ€νŠΈ λ°•μŠ€λ₯Ό 담을 μ»¨ν…Œμ΄λ„ˆ
1216
  with gr.Column(elem_id="analysis-container"):
1217
  analysis_boxes = [gr.Textbox(label=f"Space #{i+1}", lines=3) for i in range(24)]
1218
  analysis_status = gr.Markdown()
1219
+
1220
+ # λΉ„λ””μ˜€ 생성 μ„Ήμ…˜
1221
  with gr.Row():
1222
  generate_btn = gr.Button(
1223
  "🎬 μ˜μƒ 생성",
 
1226
  )
1227
  video_output = gr.Video(label="μƒμ„±λœ μ˜μƒ")
1228
 
 
 
 
 
 
 
 
 
 
 
 
 
1229
 
1230
 
1231
  # Event handlers
 
1285
  outputs=[datasets_gallery, datasets_status]
1286
  )
1287
 
1288
+ # 뢄석 νƒ­ 이벀트 ν•Έλ“€λŸ¬
1289
  analysis_refresh_btn.click(
1290
  fn=on_analyze,
1291
  outputs=analysis_boxes
 
1297
  outputs=video_output
1298
  )
1299
 
 
 
1300
  # 초기 데이터 λ‘œλ“œ
1301
  interface.load(
1302
  fn=get_trending_spaces,
 
1320
 
1321
  return interface
1322
 
1323
+ # 뢄석 및 λΉ„λ””μ˜€ 생성 ν•¨μˆ˜λ“€
1324
+ def on_analyze(progress=gr.Progress()):
1325
+ """뢄석 μ‹€ν–‰ 및 ν…μŠ€νŠΈλ°•μŠ€ μ—…λ°μ΄νŠΈ"""
1326
+ try:
1327
+ url = "https://huggingface.co/api/spaces"
1328
+ response = requests.get(url, params={'full': 'true', 'limit': 24})
1329
+ response.raise_for_status()
1330
+ spaces = response.json()[:24]
1331
+
1332
+ analysis_texts = []
1333
+
1334
+ for idx, space in enumerate(spaces):
1335
+ progress((idx + 1) / 24, desc=f"뢄석 쀑... {idx+1}/24")
1336
+ try:
1337
+ source = get_space_source(space['id'])
1338
+ source_code = source["app.py"] or source["index.html"]
1339
+ project_name = space['id'].split('/')[-1]
1340
+
1341
+ prompt = f"""
1342
+ λ‹€μŒ HuggingFace 슀페이슀λ₯Ό λΆ„μ„ν•˜μ—¬ λ‰΄μŠ€ 리포트 ν˜•μ‹μœΌλ‘œ μ„€λͺ…ν•΄μ£Όμ„Έμš”:
1343
+ μ‹œμž‘μ€ λ°˜λ“œμ‹œ "였늘의 μΈκΈ°μˆœμœ„ {idx + 1}μœ„μΈ {project_name}μž…λ‹ˆλ‹€."둜 μ‹œμž‘ν•˜κ³ ,
1344
+ μ΄μ–΄μ„œ μ£Όμš” κΈ°λŠ₯, νŠΉμ§•, ν™œμš©λ°©μ•ˆμ„ μžμ—°μŠ€λŸ½κ²Œ μ„€λͺ…ν•΄μ£Όμ„Έμš”.
1345
+
1346
+ μ†ŒμŠ€μ½”λ“œ:
1347
+ ```
1348
+ {source_code[:1500]}
1349
+ ```
1350
+ """
1351
+
1352
+ messages = [
1353
+ {"role": "system", "content": "AI 기술 μ „λ¬Έ λ‰΄μŠ€ λ¦¬ν¬ν„°μž…λ‹ˆλ‹€."},
1354
+ {"role": "user", "content": prompt}
1355
+ ]
1356
+
1357
+ response = hf_client.chat_completion(
1358
+ messages,
1359
+ max_tokens=200,
1360
+ temperature=0.7
1361
+ )
1362
+
1363
+ analysis_texts.append(response.choices[0].message.content.strip())
1364
+
1365
+ except Exception as e:
1366
+ analysis_texts.append(f"였늘의 μΈκΈ°μˆœμœ„ {idx + 1}μœ„μΈ {project_name}μž…λ‹ˆλ‹€.")
1367
+
1368
+ # μ •ν™•νžˆ 24개의 값을 λ°˜ν™˜ν•˜λ„λ‘ 보μž₯
1369
+ if len(analysis_texts) < 24:
1370
+ analysis_texts.extend([f"μˆœμœ„ {i+1}μœ„ 뢄석을 μ€€λΉ„μ€‘μž…λ‹ˆλ‹€." for i in range(len(analysis_texts), 24)])
1371
+
1372
+ return analysis_texts[:24]
1373
+
1374
+ except Exception as e:
1375
+ return [f"μˆœμœ„ {i+1}μœ„ 뢄석을 μ€€λΉ„μ€‘μž…λ‹ˆλ‹€." for i in range(24)]
1376
+
1377
+ def on_generate_video(intro, *texts, progress=gr.Progress()):
1378
+ """μ˜μƒ 생성"""
1379
+ all_texts = [intro] + list(texts)
1380
+ return generate_video(all_texts, progress)
1381
+
1382
  if __name__ == "__main__":
1383
  try:
1384
  CACHE_DIR.mkdir(exist_ok=True)