Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -118,16 +118,12 @@ def fetch_financial_news(keyword):
|
|
| 118 |
|
| 119 |
|
| 120 |
# --------------------------
|
| 121 |
-
# (*** ส่วนที่แก้ไข ***)
|
| 122 |
# ดึงราคาหุ้นย้อนหลัง (แก้ไขให้ตรงกับช่วงข่าว)
|
| 123 |
# --------------------------
|
| 124 |
@st.cache_data(ttl=3600)
|
| 125 |
def fetch_stock_price(symbol):
|
| 126 |
try:
|
| 127 |
-
# --- (เริ่มการแก้ไข) ---
|
| 128 |
# ดึงข้อมูลย้อนหลัง 8 วัน (เพื่อให้ครอบคลุมช่วงข่าว 7 วัน)
|
| 129 |
-
# เราใช้ start/end ที่ชัดเจน แทน period="14d"
|
| 130 |
-
# เพื่อให้แน่ใจว่าช่วงเวลาตรงกับข่าวที่เพิ่งดึงมา
|
| 131 |
end_date = datetime.now()
|
| 132 |
start_date = end_date - timedelta(days=8)
|
| 133 |
|
|
@@ -135,7 +131,6 @@ def fetch_stock_price(symbol):
|
|
| 135 |
start=start_date.strftime('%Y-%m-%d'),
|
| 136 |
end=end_date.strftime('%Y-%m-%d'),
|
| 137 |
interval="1d")
|
| 138 |
-
# --- (สิ้นสุดการแก้ไข) ---
|
| 139 |
|
| 140 |
if df.empty:
|
| 141 |
st.warning("ไม่พบข้อมูลราคาหุ้นในช่วง 8 วันที่ผ่านมา")
|
|
@@ -151,7 +146,7 @@ def fetch_stock_price(symbol):
|
|
| 151 |
|
| 152 |
|
| 153 |
# --------------------------
|
| 154 |
-
# MAIN APP
|
| 155 |
# --------------------------
|
| 156 |
def main():
|
| 157 |
st.title("📰 SentimentSync NewsAI")
|
|
@@ -211,7 +206,7 @@ def main():
|
|
| 211 |
future_dates = [df_sorted["date"].max() + timedelta(days=i) for i in range(1, future_days + 1)]
|
| 212 |
future_preds = model.predict(future_timestamps.reshape(-1, 1))
|
| 213 |
|
| 214 |
-
# ดึงราคาหุ้น
|
| 215 |
_, symbol = resolve_company_symbol(keyword)
|
| 216 |
stock_df = fetch_stock_price(symbol)
|
| 217 |
|
|
@@ -229,13 +224,16 @@ def main():
|
|
| 229 |
mode="lines+markers", name="Predicted Sentiment (7-day Forecast)",
|
| 230 |
line=dict(color="orange", dash="dash")
|
| 231 |
))
|
| 232 |
-
|
|
|
|
| 233 |
if not stock_df.empty:
|
| 234 |
-
|
|
|
|
| 235 |
x=stock_df["date"], y=stock_df["price"],
|
| 236 |
mode="lines+markers", name=f"{symbol} Stock Price",
|
| 237 |
line=dict(color="green"), yaxis="y2"
|
| 238 |
))
|
|
|
|
| 239 |
|
| 240 |
fig.update_layout(
|
| 241 |
title=f"แนวโน้มและพยากรณ์อารมณ์ข่าว & ราคาหุ้น '{keyword}'",
|
|
|
|
| 118 |
|
| 119 |
|
| 120 |
# --------------------------
|
|
|
|
| 121 |
# ดึงราคาหุ้นย้อนหลัง (แก้ไขให้ตรงกับช่วงข่าว)
|
| 122 |
# --------------------------
|
| 123 |
@st.cache_data(ttl=3600)
|
| 124 |
def fetch_stock_price(symbol):
|
| 125 |
try:
|
|
|
|
| 126 |
# ดึงข้อมูลย้อนหลัง 8 วัน (เพื่อให้ครอบคลุมช่วงข่าว 7 วัน)
|
|
|
|
|
|
|
| 127 |
end_date = datetime.now()
|
| 128 |
start_date = end_date - timedelta(days=8)
|
| 129 |
|
|
|
|
| 131 |
start=start_date.strftime('%Y-%m-%d'),
|
| 132 |
end=end_date.strftime('%Y-%m-%d'),
|
| 133 |
interval="1d")
|
|
|
|
| 134 |
|
| 135 |
if df.empty:
|
| 136 |
st.warning("ไม่พบข้อมูลราคาหุ้นในช่วง 8 วันที่ผ่านมา")
|
|
|
|
| 146 |
|
| 147 |
|
| 148 |
# --------------------------
|
| 149 |
+
# MAIN APP
|
| 150 |
# --------------------------
|
| 151 |
def main():
|
| 152 |
st.title("📰 SentimentSync NewsAI")
|
|
|
|
| 206 |
future_dates = [df_sorted["date"].max() + timedelta(days=i) for i in range(1, future_days + 1)]
|
| 207 |
future_preds = model.predict(future_timestamps.reshape(-1, 1))
|
| 208 |
|
| 209 |
+
# ดึงราคาหุ้น
|
| 210 |
_, symbol = resolve_company_symbol(keyword)
|
| 211 |
stock_df = fetch_stock_price(symbol)
|
| 212 |
|
|
|
|
| 224 |
mode="lines+markers", name="Predicted Sentiment (7-day Forecast)",
|
| 225 |
line=dict(color="orange", dash="dash")
|
| 226 |
))
|
| 227 |
+
|
| 228 |
+
# Stock price
|
| 229 |
if not stock_df.empty:
|
| 230 |
+
# ----- (นี่คือบรรทัดที่แก้ไข) -----
|
| 231 |
+
fig.add_trace(go.Scatter(
|
| 232 |
x=stock_df["date"], y=stock_df["price"],
|
| 233 |
mode="lines+markers", name=f"{symbol} Stock Price",
|
| 234 |
line=dict(color="green"), yaxis="y2"
|
| 235 |
))
|
| 236 |
+
# --------------------------------
|
| 237 |
|
| 238 |
fig.update_layout(
|
| 239 |
title=f"แนวโน้มและพยากรณ์อารมณ์ข่าว & ราคาหุ้น '{keyword}'",
|