KYTHY commited on
Commit
53bd0b8
·
verified ·
1 Parent(s): af300e5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +5 -10
app.py CHANGED
@@ -6,19 +6,19 @@ from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
6
  from textblob import TextBlob
7
  import nltk
8
  from wordcloud import WordCloud
9
- import base66
10
  from io import BytesIO
11
  import numpy as np
12
  from sklearn.linear_model import LinearRegression
13
  import plotly.graph_objects as go
14
- from plotly.subplots import make_subplots # Import สิ่งนี้
15
  import yfinance as yf
16
 
17
  # --------------------------
18
  # CONFIG
19
  # --------------------------
20
  st.set_page_config(page_title="📰 SentimentSync NewsAI", layout="wide")
21
- API_KEY = "88bc396d4eab4be494a4b86ec842db47" # (แนะนำให้เปลี่ยนเป็นคีย์ของคุณ)
22
 
23
  # --------------------------
24
  # UTILITIES
@@ -36,7 +36,7 @@ def generate_wordcloud(text):
36
  wordcloud = WordCloud(width=800, height=400, background_color="white", stopwords=stopwords).generate(text)
37
  buf = BytesIO()
38
  wordcloud.to_image().save(buf, format="PNG")
39
- return base66.b64encode(buf.getvalue()).decode()
40
 
41
 
42
  # --------------------------
@@ -123,9 +123,6 @@ def fetch_financial_news(keyword):
123
  # --------------------------
124
  @st.cache_data(ttl=3600)
125
  def fetch_stock_price(symbol, start_date, end_date):
126
- """
127
- ดึงราคาหุ้นตามช่วงเวลาของข่าวที่พบ (บวก/ลบ 1-2 วัน เผื่อวันหยุด)
128
- """
129
  try:
130
  start_str = (start_date - timedelta(days=2)).strftime('%Y-%m-%d')
131
  end_str = (end_date + timedelta(days=1)).strftime('%Y-%m-%d')
@@ -138,7 +135,6 @@ def fetch_stock_price(symbol, start_date, end_date):
138
 
139
  df = df.reset_index()[["Date", "Close"]]
140
  df.rename(columns={"Date": "date", "Close": "price"}, inplace=True)
141
- # Normalize วันที่ให้เป็น .dt.date
142
  df["date"] = pd.to_datetime(df["date"].dt.date)
143
  return df
144
  except Exception as e:
@@ -226,7 +222,6 @@ def main():
226
  # ป้องกัน Error ถ้ามีข้อมูลน้อยกว่า 2 วัน
227
  if len(df_sorted) < 2:
228
  st.warning("มีข้อมูลข่าวไม่เพียงพอที่จะสร้างแนวโน้ม (น้อยกว่า 2 วัน)")
229
- # แสดงตารางข่าวต่อไป แม้จะพล็อตไม่ได้
230
  st.subheader("📰 รายการข่าว")
231
  st.dataframe(news_df[["date", "source", "text", "sentiment", "url"]], use_column_width=True)
232
  return
@@ -262,7 +257,7 @@ def main():
262
  go.Scatter(
263
  x=stock_df["date"], y=stock_df["price"],
264
  name=f"{symbol} Stock Price",
265
- mode="lines+markers", # <-- นี่คือจุดที่แก้ไขล่าสุด
266
  line=dict(color="green", width=2)
267
  ),
268
  row=1, col=1, secondary_y=False
 
6
  from textblob import TextBlob
7
  import nltk
8
  from wordcloud import WordCloud
9
+ import base64 # <--- (แก้ไขจาก base66)
10
  from io import BytesIO
11
  import numpy as np
12
  from sklearn.linear_model import LinearRegression
13
  import plotly.graph_objects as go
14
+ from plotly.subplots import make_subplots
15
  import yfinance as yf
16
 
17
  # --------------------------
18
  # CONFIG
19
  # --------------------------
20
  st.set_page_config(page_title="📰 SentimentSync NewsAI", layout="wide")
21
+ API_KEY = "88bc396d4eab4be494a4b86ec842db47"
22
 
23
  # --------------------------
24
  # UTILITIES
 
36
  wordcloud = WordCloud(width=800, height=400, background_color="white", stopwords=stopwords).generate(text)
37
  buf = BytesIO()
38
  wordcloud.to_image().save(buf, format="PNG")
39
+ return base64.b64encode(buf.getvalue()).decode() # <--- (แก้ไขจาก base66)
40
 
41
 
42
  # --------------------------
 
123
  # --------------------------
124
  @st.cache_data(ttl=3600)
125
  def fetch_stock_price(symbol, start_date, end_date):
 
 
 
126
  try:
127
  start_str = (start_date - timedelta(days=2)).strftime('%Y-%m-%d')
128
  end_str = (end_date + timedelta(days=1)).strftime('%Y-%m-%d')
 
135
 
136
  df = df.reset_index()[["Date", "Close"]]
137
  df.rename(columns={"Date": "date", "Close": "price"}, inplace=True)
 
138
  df["date"] = pd.to_datetime(df["date"].dt.date)
139
  return df
140
  except Exception as e:
 
222
  # ป้องกัน Error ถ้ามีข้อมูลน้อยกว่า 2 วัน
223
  if len(df_sorted) < 2:
224
  st.warning("มีข้อมูลข่าวไม่เพียงพอที่จะสร้างแนวโน้ม (น้อยกว่า 2 วัน)")
 
225
  st.subheader("📰 รายการข่าว")
226
  st.dataframe(news_df[["date", "source", "text", "sentiment", "url"]], use_column_width=True)
227
  return
 
257
  go.Scatter(
258
  x=stock_df["date"], y=stock_df["price"],
259
  name=f"{symbol} Stock Price",
260
+ mode="lines+markers",
261
  line=dict(color="green", width=2)
262
  ),
263
  row=1, col=1, secondary_y=False