Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -137,73 +137,8 @@ def process_search_results(items):
|
|
| 137 |
return search_results
|
| 138 |
|
| 139 |
def google_search_fallback(news_text):
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
mock_results = []
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
if "Argentina" in news_text and "World Cup" in news_text:
|
| 147 |
-
mock_results = [
|
| 148 |
-
{
|
| 149 |
-
'title': 'Argentina wins World Cup 2022 - FIFA Official',
|
| 150 |
-
'snippet': 'Argentina defeated France in the 2022 World Cup final to win their third World Cup title.',
|
| 151 |
-
'link': 'https://www.fifa.com/worldcup/news/argentina-wins-world-cup-2022'
|
| 152 |
-
},
|
| 153 |
-
{
|
| 154 |
-
'title': 'World Cup 2022 Final: Argentina vs France - BBC Sport',
|
| 155 |
-
'snippet': 'Argentina won the 2022 FIFA World Cup after defeating France in a thrilling final.',
|
| 156 |
-
'link': 'https://www.bbc.com/sport/football/world-cup-2022'
|
| 157 |
-
},
|
| 158 |
-
{
|
| 159 |
-
'title': 'Lionel Messi leads Argentina to World Cup victory - ESPN',
|
| 160 |
-
'snippet': 'Lionel Messi finally won the World Cup as Argentina defeated France in Qatar 2022.',
|
| 161 |
-
'link': 'https://www.espn.com/soccer/world-cup/story/argentina-messi-world-cup'
|
| 162 |
-
}
|
| 163 |
-
]
|
| 164 |
-
elif "COVID" in news_text or "covid" in news_text:
|
| 165 |
-
mock_results = [
|
| 166 |
-
{
|
| 167 |
-
'title': 'COVID-19 Updates - World Health Organization',
|
| 168 |
-
'snippet': 'Latest updates on COVID-19 pandemic from WHO official sources.',
|
| 169 |
-
'link': 'https://www.who.int/emergencies/diseases/novel-coronavirus-2019'
|
| 170 |
-
},
|
| 171 |
-
{
|
| 172 |
-
'title': 'COVID-19 Vietnam News - Ministry of Health',
|
| 173 |
-
'snippet': 'Official COVID-19 updates from Vietnam Ministry of Health.',
|
| 174 |
-
'link': 'https://moh.gov.vn/covid-19'
|
| 175 |
-
}
|
| 176 |
-
]
|
| 177 |
-
elif "Việt Nam" in news_text or "Vietnam" in news_text:
|
| 178 |
-
mock_results = [
|
| 179 |
-
{
|
| 180 |
-
'title': 'Vietnam News - VnExpress',
|
| 181 |
-
'snippet': 'Latest news from Vietnam covering politics, economy, and society.',
|
| 182 |
-
'link': 'https://vnexpress.net'
|
| 183 |
-
},
|
| 184 |
-
{
|
| 185 |
-
'title': 'Vietnam News - Tuổi Trẻ',
|
| 186 |
-
'snippet': 'Vietnamese news and current events from Tuổi Trẻ newspaper.',
|
| 187 |
-
'link': 'https://tuoitre.vn'
|
| 188 |
-
}
|
| 189 |
-
]
|
| 190 |
-
else:
|
| 191 |
-
|
| 192 |
-
mock_results = [
|
| 193 |
-
{
|
| 194 |
-
'title': 'News Verification - Fact Check',
|
| 195 |
-
'snippet': 'Fact-checking and news verification from reliable sources.',
|
| 196 |
-
'link': 'https://www.factcheck.org'
|
| 197 |
-
},
|
| 198 |
-
{
|
| 199 |
-
'title': 'News Analysis - Reuters',
|
| 200 |
-
'snippet': 'Professional news analysis and reporting from Reuters.',
|
| 201 |
-
'link': 'https://www.reuters.com'
|
| 202 |
-
}
|
| 203 |
-
]
|
| 204 |
-
|
| 205 |
-
print(f"Generated {len(mock_results)} mock search results")
|
| 206 |
-
return mock_results
|
| 207 |
|
| 208 |
|
| 209 |
|
|
@@ -467,6 +402,8 @@ Tránh dùng thuật ngữ kỹ thuật, hãy viết như đang nói chuyện v
|
|
| 467 |
|
| 468 |
🌐 **Nguồn tin:** {len(search_results) if search_results else 0} nguồn được tìm thấy
|
| 469 |
|
|
|
|
|
|
|
| 470 |
💡 **Khuyến nghị:** Hãy kiểm tra thêm từ các nguồn tin chính thống trước khi tin tưởng hoàn toàn.
|
| 471 |
"""
|
| 472 |
return fallback_analysis
|
|
@@ -572,7 +509,7 @@ def analyze_news(news_text):
|
|
| 572 |
|
| 573 |
</div>
|
| 574 |
"""
|
| 575 |
-
return gr.update(value=empty_message, visible=True), "
|
| 576 |
|
| 577 |
print(f"Analyzing: {news_text[:50]}...")
|
| 578 |
|
|
@@ -646,6 +583,8 @@ def analyze_news(news_text):
|
|
| 646 |
sources_display = "<br>".join([f"• {source}" for source in found_sources[:5]]) # Show max 5 sources
|
| 647 |
if len(found_sources) > 5:
|
| 648 |
sources_display += f"<br>• ... và {len(found_sources) - 5} nguồn khác"
|
|
|
|
|
|
|
| 649 |
|
| 650 |
# Show credible sources found
|
| 651 |
credible_display = ""
|
|
@@ -708,7 +647,7 @@ def analyze_news(news_text):
|
|
| 708 |
</div>
|
| 709 |
"""
|
| 710 |
|
| 711 |
-
return gr.update(value=detailed_analysis, visible=True), f"
|
| 712 |
|
| 713 |
except Exception as e:
|
| 714 |
error_message = f"""
|
|
@@ -729,7 +668,7 @@ def analyze_news(news_text):
|
|
| 729 |
</div>
|
| 730 |
"""
|
| 731 |
print(f"Analysis error: {e}")
|
| 732 |
-
return gr.update(value=error_message, visible=True), "
|
| 733 |
|
| 734 |
# --- GRADIO INTERFACE ---
|
| 735 |
def create_interface():
|
|
@@ -779,8 +718,8 @@ def create_interface():
|
|
| 779 |
|
| 780 |
with gr.Column(scale=1, visible=False) as results_column:
|
| 781 |
gr.Markdown("### 📊 Kết quả phân tích")
|
| 782 |
-
real_confidence = gr.
|
| 783 |
-
fake_confidence = gr.
|
| 784 |
|
| 785 |
detailed_analysis = gr.Markdown("### 📋 Phân tích chi tiết sẽ hiển thị ở đây...", visible=False)
|
| 786 |
|
|
|
|
| 137 |
return search_results
|
| 138 |
|
| 139 |
def google_search_fallback(news_text):
|
| 140 |
+
print("Google Search is unavailable due to quota exceeded")
|
| 141 |
+
return []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
|
| 143 |
|
| 144 |
|
|
|
|
| 402 |
|
| 403 |
🌐 **Nguồn tin:** {len(search_results) if search_results else 0} nguồn được tìm thấy
|
| 404 |
|
| 405 |
+
⚠️ **Lưu ý:** Google Search không khả dụng do hết quota. Phân tích chỉ dựa trên AI.
|
| 406 |
+
|
| 407 |
💡 **Khuyến nghị:** Hãy kiểm tra thêm từ các nguồn tin chính thống trước khi tin tưởng hoàn toàn.
|
| 408 |
"""
|
| 409 |
return fallback_analysis
|
|
|
|
| 509 |
|
| 510 |
</div>
|
| 511 |
"""
|
| 512 |
+
return gr.update(value=empty_message, visible=True), "**Độ chắc chắn là tin thật:** 0%", "**Độ chắc chắn là tin giả:** 0%", gr.update(visible=False)
|
| 513 |
|
| 514 |
print(f"Analyzing: {news_text[:50]}...")
|
| 515 |
|
|
|
|
| 583 |
sources_display = "<br>".join([f"• {source}" for source in found_sources[:5]]) # Show max 5 sources
|
| 584 |
if len(found_sources) > 5:
|
| 585 |
sources_display += f"<br>• ... và {len(found_sources) - 5} nguồn khác"
|
| 586 |
+
elif len(search_results) == 0:
|
| 587 |
+
sources_display = "⚠️ Google Search không khả dụng do hết quota"
|
| 588 |
|
| 589 |
# Show credible sources found
|
| 590 |
credible_display = ""
|
|
|
|
| 647 |
</div>
|
| 648 |
"""
|
| 649 |
|
| 650 |
+
return gr.update(value=detailed_analysis, visible=True), f"**Độ chắc chắn là tin thật:** {real_confidence:.1%}", f"**Độ chắc chắn là tin giả:** {fake_confidence:.1%}", gr.update(visible=True)
|
| 651 |
|
| 652 |
except Exception as e:
|
| 653 |
error_message = f"""
|
|
|
|
| 668 |
</div>
|
| 669 |
"""
|
| 670 |
print(f"Analysis error: {e}")
|
| 671 |
+
return gr.update(value=error_message, visible=True), "**Độ chắc chắn là tin thật:** 0%", "**Độ chắc chắn là tin giả:** 0%", gr.update(visible=True)
|
| 672 |
|
| 673 |
# --- GRADIO INTERFACE ---
|
| 674 |
def create_interface():
|
|
|
|
| 718 |
|
| 719 |
with gr.Column(scale=1, visible=False) as results_column:
|
| 720 |
gr.Markdown("### 📊 Kết quả phân tích")
|
| 721 |
+
real_confidence = gr.Markdown("**Độ chắc chắn là tin thật:** 0%")
|
| 722 |
+
fake_confidence = gr.Markdown("**Độ chắc chắn là tin giả:** 0%")
|
| 723 |
|
| 724 |
detailed_analysis = gr.Markdown("### 📋 Phân tích chi tiết sẽ hiển thị ở đây...", visible=False)
|
| 725 |
|