Update app.py
Browse files
app.py
CHANGED
@@ -4,6 +4,62 @@ import subprocess
|
|
4 |
subprocess.run(["pip", "install", "--upgrade", "pip"])
|
5 |
subprocess.run(["pip", "install", "--upgrade", "openai", "yfinance", "gradio", "matplotlib", "Pillow"])
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
# ์ดํ ์ฝ๋ ์คํ
|
8 |
import requests
|
9 |
import gradio as gr
|
@@ -13,10 +69,9 @@ import io
|
|
13 |
from PIL import Image
|
14 |
from datetime import datetime, timedelta
|
15 |
from openai import OpenAI
|
16 |
-
import os
|
17 |
|
18 |
# Perplexity AI API ์ค์
|
19 |
-
API_KEY = "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"
|
20 |
|
21 |
def get_real_news_summary(company, date):
|
22 |
# OpenAI ํด๋ผ์ด์ธํธ ์ด๊ธฐํ
|
@@ -154,4 +209,4 @@ with gr.Blocks() as demo:
|
|
154 |
)
|
155 |
|
156 |
# Gradio ์คํ
|
157 |
-
demo.launch()
|
|
|
4 |
subprocess.run(["pip", "install", "--upgrade", "pip"])
|
5 |
subprocess.run(["pip", "install", "--upgrade", "openai", "yfinance", "gradio", "matplotlib", "Pillow"])
|
6 |
|
7 |
+
import os
|
8 |
+
import matplotlib.font_manager as fm
|
9 |
+
import matplotlib.pyplot as plt
|
10 |
+
import yfinance as yf
|
11 |
+
import numpy as np
|
12 |
+
|
13 |
+
# 1. ๋๋๊ณ ๋ ํฐํธ ์ค์น ๋ฐ ์ ์ฉ
|
14 |
+
def install_nanum_font():
|
15 |
+
try:
|
16 |
+
subprocess.run(["apt-get", "update"], check=True)
|
17 |
+
subprocess.run(["apt-get", "install", "-y", "fonts-nanum"], check=True)
|
18 |
+
subprocess.run(["fc-cache", "-fv"], check=True)
|
19 |
+
except Exception as e:
|
20 |
+
print(f"ํฐํธ ์ค์น ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: {e}")
|
21 |
+
|
22 |
+
install_nanum_font()
|
23 |
+
|
24 |
+
# ๋๋๊ณ ๋ ํฐํธ ๊ฒฝ๋ก ์ค์ ๋ฐ ๊ฐ์ ์ ์ฉ
|
25 |
+
font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'
|
26 |
+
|
27 |
+
if os.path.exists(font_path):
|
28 |
+
fm.fontManager.addfont(font_path)
|
29 |
+
else:
|
30 |
+
print("ํฐํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.")
|
31 |
+
|
32 |
+
# ๋๋๊ณ ๋ ํฐํธ ๊ฐ์ ์ ์ฉ
|
33 |
+
font_prop = fm.FontProperties(fname=font_path)
|
34 |
+
plt.rcParams['font.family'] = font_prop.get_name()
|
35 |
+
plt.rcParams['axes.unicode_minus'] = False # ๋ง์ด๋์ค ๋ถํธ ๊นจ์ง ๋ฐฉ์ง
|
36 |
+
|
37 |
+
# 2. yfinance๋ก ์ฃผ๊ฐ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (์ผ์ฑ์ ์ ์์)
|
38 |
+
ticker = '005930.KS' # ์ผ์ฑ์ ์ ํฐ์ปค
|
39 |
+
stock = yf.Ticker(ticker)
|
40 |
+
stock_data = stock.history(period="max")
|
41 |
+
|
42 |
+
# ์ฃผ๊ฐ ๋ฐ์ดํฐ ์ถ๋ ฅ ํ์ธ
|
43 |
+
print(stock_data.head()) # ์ฃผ๊ฐ ๋ฐ์ดํฐ ์ผ๋ถ ํ์ธ
|
44 |
+
|
45 |
+
# 3. ์ฃผ๊ฐ ๋ฐ์ดํฐ ์๊ฐํ (pandas ๋ฐ์ดํฐํ๋ ์์ numpy ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ์ฒ๋ฆฌ)
|
46 |
+
plt.figure(figsize=(10, 6))
|
47 |
+
|
48 |
+
# ์ธ๋ฑ์ค์ ์ข
๊ฐ ๋ฐ์ดํฐ๋ฅผ numpy ๋ฐฐ์ด๋ก ๋ณํ
|
49 |
+
dates = stock_data.index.to_numpy()
|
50 |
+
closing_prices = stock_data['Close'].to_numpy()
|
51 |
+
|
52 |
+
# ์ฃผ๊ฐ ๋ฐ์ดํฐ ์๊ฐํ
|
53 |
+
plt.plot(dates, closing_prices, label='์ผ์ฑ์ ์ ์ข
๊ฐ')
|
54 |
+
|
55 |
+
# ๊ทธ๋ํ ์ ๋ชฉ, ์ถ ๋ผ๋ฒจ์ ํ๊ธ๋ก ์ค์
|
56 |
+
plt.title('์ผ์ฑ์ ์ ์ฃผ๊ฐ ์ถ์ด', fontproperties=font_prop)
|
57 |
+
plt.xlabel('๋ ์ง', fontproperties=font_prop)
|
58 |
+
plt.ylabel('์ข
๊ฐ', fontproperties=font_prop)
|
59 |
+
plt.legend(prop=font_prop)
|
60 |
+
|
61 |
+
# B ์ฝ๋
|
62 |
+
|
63 |
# ์ดํ ์ฝ๋ ์คํ
|
64 |
import requests
|
65 |
import gradio as gr
|
|
|
69 |
from PIL import Image
|
70 |
from datetime import datetime, timedelta
|
71 |
from openai import OpenAI
|
|
|
72 |
|
73 |
# Perplexity AI API ์ค์
|
74 |
+
API_KEY = "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" # ์ฌ๊ธฐ์ Perplexity AI API ํค๋ฅผ ์
๋ ฅํ์ธ์.
|
75 |
|
76 |
def get_real_news_summary(company, date):
|
77 |
# OpenAI ํด๋ผ์ด์ธํธ ์ด๊ธฐํ
|
|
|
209 |
)
|
210 |
|
211 |
# Gradio ์คํ
|
212 |
+
demo.launch()
|