Spaces:
Paused
Paused
Update app.py
Browse files
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 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
553 |
|
554 |
-
|
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,
|