openfree commited on
Commit
74a32a8
ยท
verified ยท
1 Parent(s): b369588

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +86 -83
app.py CHANGED
@@ -475,90 +475,93 @@ with gr.Blocks(theme="Nymbo/Nymbo_Theme", css=css, title="NewsAI ์„œ๋น„์Šค") as
475
  return outputs
476
 
477
  def search_global(query, articles_state_global, progress=gr.Progress()):
478
- status_msg = "์ „์„ธ๊ณ„ ๊ฒ€์ƒ‰์„ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค..."
479
- all_results = []
480
- displayed_count = 0
481
-
482
- # ์ดˆ๊ธฐ ์ถœ๋ ฅ ์„ค์ •
483
- outputs = []
484
- outputs.append(gr.update(value=status_msg, visible=True))
485
- outputs.append(gr.update(value=f"**๊ฒ€์ƒ‰์–ด:** {query}", visible=True))
486
-
487
- # 1000๊ฐœ์˜ ๊ฒฐ๊ณผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ดˆ๊ธฐ์— ๋ชจ๋‘ ์ˆจ๊น€ ์ฒ˜๋ฆฌ
488
- for _ in global_article_components:
489
- outputs.extend([
490
- gr.update(visible=False), gr.update(), gr.update(),
491
- gr.update(), gr.update()
492
- ])
493
- outputs.append([]) # articles_state_global
494
-
495
- yield outputs # ์ดˆ๊ธฐ ์ƒํƒœ ์ถœ๋ ฅ
496
-
497
- # ๊ตญ๊ฐ€๋ณ„ ๊ฒ€์ƒ‰ ๋ฐ ์‹ค์‹œ๊ฐ„ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
498
- for idx, (country, location) in enumerate(COUNTRY_LOCATIONS.items()):
499
- progress(idx / len(COUNTRY_LOCATIONS), f"{country} ๊ฒ€์ƒ‰ ์ค‘... ({idx + 1}/{len(COUNTRY_LOCATIONS)})")
500
-
501
- try:
502
- error_message, articles = serphouse_search(query, country)
503
- if not error_message and articles:
504
- # ํ•ด๋‹น ๊ตญ๊ฐ€์˜ ๊ฒฐ๊ณผ์— ๊ตญ๊ฐ€ ์ •๋ณด ์ถ”๊ฐ€
505
- for article in articles:
506
- article['source_country'] = country
507
-
508
- # ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ ์ถ”๊ฐ€ ๋ฐ ์ •๋ ฌ
509
- all_results.extend(articles)
510
- sorted_results = sorted(all_results, key=lambda x: x.get('time', ''), reverse=True)
511
-
512
- # ์ค‘๋ณต ์ œ๊ฑฐ
513
- seen_urls = set()
514
- unique_results = []
515
- for article in sorted_results:
516
- url = article.get('link', '')
517
- if url not in seen_urls:
518
- seen_urls.add(url)
519
- unique_results.append(article)
520
-
521
- # ์ตœ๋Œ€ 1000๊ฐœ๊นŒ์ง€๋งŒ ์œ ์ง€
522
- unique_results = unique_results[:1000]
523
-
524
- # ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ ์ถœ๋ ฅ
525
- outputs = []
526
- outputs.append(gr.update(value=f"์ „์„ธ๊ณ„ ๊ฒ€์ƒ‰ ์ง„ํ–‰ ์ค‘... ({idx + 1}/{len(COUNTRY_LOCATIONS)} ๊ตญ๊ฐ€ ์™„๋ฃŒ)", visible=True))
527
- outputs.append(gr.update(value=f"**๊ฒ€์ƒ‰์–ด:** {query}\n**ํ˜„์žฌ๊นŒ์ง€ ๋ฐœ๊ฒฌ๋œ ๋‰ด์Šค:** {len(unique_results)}๊ฑด", visible=True))
528
-
529
- # ๊ฒฐ๊ณผ ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ
530
- for idx, comp in enumerate(global_article_components):
531
- if idx < len(unique_results):
532
- article = unique_results[idx]
533
- image_url = article.get('image_url', '')
534
- image_update = gr.update(value=image_url, visible=True) if image_url and not image_url.startswith('data:image') else gr.update(value=None, visible=False)
535
-
536
- korean_summary = translate_to_korean(article['snippet'])
537
-
538
- outputs.extend([
539
- gr.update(visible=True),
540
- gr.update(value=f"### [{article['title']}]({article['link']})"),
541
- image_update,
542
- gr.update(value=f"**์š”์•ฝ:** {article['snippet']}\n\n**ํ•œ๊ธ€ ์š”์•ฝ:** {korean_summary}"),
543
- gr.update(value=f"**์ถœ์ฒ˜:** {article['channel']} | **๊ตญ๊ฐ€:** {article['source_country']} | **์‹œ๊ฐ„:** {article['time']}")
544
- ])
545
- else:
546
- outputs.extend([
547
- gr.update(visible=False), gr.update(), gr.update(),
548
- gr.update(), gr.update()
549
- ])
550
-
551
- outputs.append(unique_results)
552
- yield outputs
 
 
 
 
 
 
 
 
 
 
553
 
554
- except Exception as e:
555
- print(f"Error searching {country}: {str(e)}")
556
- continue
557
-
558
- # ์ตœ์ข… ์ƒํƒœ ์—…๋ฐ์ดํŠธ
559
- final_status = f"๊ฒ€์ƒ‰ ์™„๋ฃŒ! ์ด {len(unique_results)}๊ฐœ์˜ ๋‰ด์Šค๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
560
- outputs[0] = gr.update(value=final_status, visible=True)
561
- yield outputs
562
 
563
  search_outputs = [
564
  status_message,
 
475
  return outputs
476
 
477
  def search_global(query, articles_state_global, progress=gr.Progress()):
478
+ status_msg = "์ „์„ธ๊ณ„ ๊ฒ€์ƒ‰์„ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค..."
479
+ all_results = []
480
+ displayed_count = 0
481
+
482
+ # ์ดˆ๊ธฐ ์ถœ๋ ฅ ์„ค์ • - ์ƒ๋‹จ ์ƒํƒœ ํ‘œ์‹œ๋งŒ ์—…๋ฐ์ดํŠธ
483
+ outputs = []
484
+ outputs.append(gr.update(value=status_msg, visible=True)) # ์ƒํƒœ ๋ฉ”์‹œ์ง€
485
+ outputs.append(gr.update(value=f"**๊ฒ€์ƒ‰์–ด:** {query}", visible=True)) # ๊ฒ€์ƒ‰์–ด ํ‘œ์‹œ
486
+
487
+ # ๊ฒฐ๊ณผ ์ปดํฌ๋„ŒํŠธ ์ดˆ๊ธฐํ™”
488
+ for _ in global_article_components:
489
+ outputs.extend([
490
+ gr.update(visible=False), gr.update(), gr.update(),
491
+ gr.update(), gr.update()
492
+ ])
493
+ outputs.append([])
494
+
495
+ yield outputs
496
+
497
+ # ๊ตญ๊ฐ€๋ณ„ ๊ฒ€์ƒ‰ ๋ฐ ์‹ค์‹œ๊ฐ„ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
498
+ for idx, (country, location) in enumerate(COUNTRY_LOCATIONS.items()):
499
+ progress(idx / len(COUNTRY_LOCATIONS), f"์ง„ํ–‰ ์ƒํ™ฉ: {idx + 1}/{len(COUNTRY_LOCATIONS)} ๊ตญ๊ฐ€ ๊ฒ€์ƒ‰ ์ค‘... (ํ˜„์žฌ: {country})")
500
+
501
+ try:
502
+ error_message, articles = serphouse_search(query, country)
503
+ if not error_message and articles:
504
+ for article in articles:
505
+ article['source_country'] = country
506
+
507
+ all_results.extend(articles)
508
+ sorted_results = sorted(all_results, key=lambda x: x.get('time', ''), reverse=True)
509
+
510
+ # ์ค‘๋ณต ์ œ๊ฑฐ
511
+ seen_urls = set()
512
+ unique_results = []
513
+ for article in sorted_results:
514
+ url = article.get('link', '')
515
+ if url not in seen_urls:
516
+ seen_urls.add(url)
517
+ unique_results.append(article)
518
+
519
+ unique_results = unique_results[:1000]
520
+
521
+ # ๊ฒฐ๊ณผ ์ถœ๋ ฅ ์—…๋ฐ์ดํŠธ
522
+ outputs = []
523
+ # ์ƒ๋‹จ ์ƒํƒœ ํ‘œ์‹œ ์—…๋ฐ์ดํŠธ
524
+ outputs.append(gr.update(
525
+ value=f"๊ฒ€์ƒ‰ ์ง„ํ–‰ ์ค‘... ({idx + 1}/{len(COUNTRY_LOCATIONS)} ๊ตญ๊ฐ€ ์™„๋ฃŒ)\nํ˜„์žฌ๊นŒ์ง€ ๋ฐœ๊ฒฌ๋œ ๋‰ด์Šค: {len(unique_results)}๊ฑด",
526
+ visible=True
527
+ ))
528
+ outputs.append(gr.update(value=f"**๊ฒ€์ƒ‰์–ด:** {query}", visible=True))
529
+
530
+ # ๊ฒฐ๊ณผ ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ
531
+ for idx, comp in enumerate(global_article_components):
532
+ if idx < len(unique_results):
533
+ article = unique_results[idx]
534
+ image_url = article.get('image_url', '')
535
+ image_update = gr.update(value=image_url, visible=True) if image_url and not image_url.startswith('data:image') else gr.update(value=None, visible=False)
536
+
537
+ korean_summary = translate_to_korean(article['snippet'])
538
+
539
+ outputs.extend([
540
+ gr.update(visible=True),
541
+ gr.update(value=f"### [{article['title']}]({article['link']})"),
542
+ image_update,
543
+ gr.update(value=f"**์š”์•ฝ:** {article['snippet']}\n\n**ํ•œ๊ธ€ ์š”์•ฝ:** {korean_summary}"),
544
+ gr.update(value=f"**์ถœ์ฒ˜:** {article['channel']} | **๊ตญ๊ฐ€:** {article['source_country']} | **์‹œ๊ฐ„:** {article['time']}")
545
+ ])
546
+ else:
547
+ outputs.extend([
548
+ gr.update(visible=False), gr.update(), gr.update(),
549
+ gr.update(), gr.update()
550
+ ])
551
+
552
+ outputs.append(unique_results)
553
+ yield outputs
554
+
555
+ except Exception as e:
556
+ print(f"Error searching {country}: {str(e)}")
557
+ continue
558
+
559
+ # ์ตœ์ข… ์ƒํƒœ ์—…๋ฐ์ดํŠธ
560
+ final_status = f"๊ฒ€์ƒ‰ ์™„๋ฃŒ! ์ด {len(unique_results)}๊ฐœ์˜ ๋‰ด์Šค๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
561
+ outputs[0] = gr.update(value=final_status, visible=True)
562
+ yield outputs
563
 
564
+
 
 
 
 
 
 
 
565
 
566
  search_outputs = [
567
  status_message,