Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -3,6 +3,7 @@ import datetime
|
|
| 3 |
import requests
|
| 4 |
import pytz
|
| 5 |
import yaml
|
|
|
|
| 6 |
from tools.final_answer import FinalAnswerTool
|
| 7 |
|
| 8 |
from Gradio_UI import GradioUI
|
|
@@ -33,6 +34,53 @@ def get_current_time_in_timezone(timezone: str) -> str:
|
|
| 33 |
except Exception as e:
|
| 34 |
return f"Error fetching time for timezone '{timezone}': {str(e)}"
|
| 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
final_answer = FinalAnswerTool()
|
| 38 |
|
|
|
|
| 3 |
import requests
|
| 4 |
import pytz
|
| 5 |
import yaml
|
| 6 |
+
import feedparser
|
| 7 |
from tools.final_answer import FinalAnswerTool
|
| 8 |
|
| 9 |
from Gradio_UI import GradioUI
|
|
|
|
| 34 |
except Exception as e:
|
| 35 |
return f"Error fetching time for timezone '{timezone}': {str(e)}"
|
| 36 |
|
| 37 |
+
@tool
|
| 38 |
+
def my_custom_tool(rss_url: str, max_items: int) -> str:
|
| 39 |
+
"""
|
| 40 |
+
從指定的 RSS Feed URL 獲取最新的新聞。
|
| 41 |
+
|
| 42 |
+
Args:
|
| 43 |
+
rss_url: 要讀取的 RSS Feed 的 URL。
|
| 44 |
+
max_items: 要顯示的最大新聞條目數量。
|
| 45 |
+
"""
|
| 46 |
+
DEFAULT_RSS_URL = "https://rthk.hk/rthk/news/rss/c_expressnews_clocal.xml"
|
| 47 |
+
|
| 48 |
+
# 如果 rss_url 未提供或為空,則使用預設 URL
|
| 49 |
+
url_to_fetch = rss_url if rss_url and rss_url.strip() else DEFAULT_RSS_URL
|
| 50 |
+
|
| 51 |
+
# 確保 max_items 是正整數,如果不是或未提供,則使用預設值
|
| 52 |
+
try:
|
| 53 |
+
num_items = int(max_items)
|
| 54 |
+
if num_items <= 0:
|
| 55 |
+
num_items = 5 # 預設顯示 5 條
|
| 56 |
+
except (ValueError, TypeError):
|
| 57 |
+
num_items = 5 # 預設顯示 5 條
|
| 58 |
+
|
| 59 |
+
try:
|
| 60 |
+
feed = feedparser.parse(url_to_fetch)
|
| 61 |
+
|
| 62 |
+
if not feed.entries:
|
| 63 |
+
return f"無法從 {url_to_fetch} 獲取新聞,或者 RSS Feed 為空。"
|
| 64 |
+
|
| 65 |
+
news_output = f"來自 {url_to_fetch} 的最新新聞 (最多 {num_items} 條):\n"
|
| 66 |
+
for entry in feed.entries[:num_items]:
|
| 67 |
+
title = entry.get("title", "無標題")
|
| 68 |
+
link = entry.get("link", "#")
|
| 69 |
+
summary = entry.get("summary", "") # 嘗試獲取摘要
|
| 70 |
+
|
| 71 |
+
news_output += f"- 標題: {title}\n"
|
| 72 |
+
news_output += f" 連結: {link}\n"
|
| 73 |
+
if summary:
|
| 74 |
+
# 簡單清理 HTML 標籤 (如果有的話),並截斷摘要長度
|
| 75 |
+
import re
|
| 76 |
+
clean_summary = re.sub(r'<[^>]+>', '', summary)
|
| 77 |
+
news_output += f" 摘要: {clean_summary[:100]}...\n" # 顯示前100個字元
|
| 78 |
+
news_output += "\n"
|
| 79 |
+
|
| 80 |
+
return news_output
|
| 81 |
+
|
| 82 |
+
except Exception as e:
|
| 83 |
+
return f"讀取 RSS Feed ({url_to_fetch}) 時發生錯誤:{str(e)}"
|
| 84 |
|
| 85 |
final_answer = FinalAnswerTool()
|
| 86 |
|