Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -11,19 +11,20 @@ OPENAI_API_KEY = "sk-proj-HNLnMhMNo6Pq9LfZGr6b3YWytwxmgI1_z9rXSu272RwgjTOvW42Uft
|
|
11 |
OPENAI_BASE_URL = "https://api.openai.com/v1"
|
12 |
|
13 |
def get_news():
|
|
|
14 |
response = requests.get(MEDIASTACK_URL)
|
15 |
if response.status_code == 200:
|
16 |
return response.json().get('data', [])
|
17 |
return []
|
18 |
|
19 |
def summarize_with_openai(text):
|
20 |
-
"""
|
21 |
try:
|
22 |
client = httpx.Client(follow_redirects=True, timeout=30.0)
|
23 |
payload = {
|
24 |
"model": "gpt-4o-mini",
|
25 |
"messages": [
|
26 |
-
{"role": "system", "content": "๋ด์ค ์ ๋ชฉ์ 20์ ์ด๋ด์ ํ๊ตญ์ด๋ก ์์ฝํด ์ฃผ์ธ์. Note๋ฅผ
|
27 |
{"role": "user", "content": text}
|
28 |
],
|
29 |
"temperature": 0.5
|
@@ -40,26 +41,39 @@ def summarize_with_openai(text):
|
|
40 |
return "์์ฝ ์คํจ"
|
41 |
|
42 |
def display_news():
|
|
|
|
|
|
|
43 |
news_items = get_news()[:5] # Limit to 5 news items
|
44 |
|
45 |
if not news_items:
|
46 |
st.warning("๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ์คํจํ์ต๋๋ค.")
|
47 |
return
|
48 |
-
|
49 |
for item in news_items:
|
50 |
original_title = item.get('title', '')
|
|
|
|
|
|
|
|
|
|
|
51 |
if not original_title:
|
52 |
continue
|
53 |
-
|
54 |
summarized_title = summarize_with_openai(original_title)
|
55 |
if summarized_title:
|
|
|
|
|
56 |
st.markdown(f'''
|
57 |
<div class="headline-container">
|
58 |
-
<
|
|
|
|
|
59 |
</div>
|
60 |
''', unsafe_allow_html=True)
|
61 |
|
62 |
def main():
|
|
|
63 |
st.set_page_config(layout="wide")
|
64 |
|
65 |
st.markdown("""
|
|
|
11 |
OPENAI_BASE_URL = "https://api.openai.com/v1"
|
12 |
|
13 |
def get_news():
|
14 |
+
"""๋ด์ค ๋ฐ์ดํฐ๋ฅผ Mediastack API์์ ๊ฐ์ ธ์ต๋๋ค."""
|
15 |
response = requests.get(MEDIASTACK_URL)
|
16 |
if response.status_code == 200:
|
17 |
return response.json().get('data', [])
|
18 |
return []
|
19 |
|
20 |
def summarize_with_openai(text):
|
21 |
+
"""OpenAI GPT-4o-mini ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ด์ค ์ ๋ชฉ์ ์์ฝํฉ๋๋ค."""
|
22 |
try:
|
23 |
client = httpx.Client(follow_redirects=True, timeout=30.0)
|
24 |
payload = {
|
25 |
"model": "gpt-4o-mini",
|
26 |
"messages": [
|
27 |
+
{"role": "system", "content": "๋ด์ค ์ ๋ชฉ์ 20์ ์ด๋ด์ ํ๊ตญ์ด๋ก ์์ฝํด ์ฃผ์ธ์. 'Note'๋ฅผ ํฌํจํ์ง ๋ง์ธ์."},
|
28 |
{"role": "user", "content": text}
|
29 |
],
|
30 |
"temperature": 0.5
|
|
|
41 |
return "์์ฝ ์คํจ"
|
42 |
|
43 |
def display_news():
|
44 |
+
"""๋ด์ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์์ฝ ๋ฐ ํ์ํฉ๋๋ค."""
|
45 |
+
excluded_headlines = ["์ฌ๋ฏธ์๊ณ ๋งค๋ ฅ์ ์ด์ง๋ง ํ๋ ์ง์
ํ์"] # ์ ์ธํ ํค๋๋ผ์ธ ๋ชฉ๋ก
|
46 |
+
|
47 |
news_items = get_news()[:5] # Limit to 5 news items
|
48 |
|
49 |
if not news_items:
|
50 |
st.warning("๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ์คํจํ์ต๋๋ค.")
|
51 |
return
|
52 |
+
|
53 |
for item in news_items:
|
54 |
original_title = item.get('title', '')
|
55 |
+
|
56 |
+
# ํค๋๋ผ์ธ ์ ์ธ ์กฐ๊ฑด
|
57 |
+
if original_title in excluded_headlines:
|
58 |
+
continue
|
59 |
+
|
60 |
if not original_title:
|
61 |
continue
|
62 |
+
|
63 |
summarized_title = summarize_with_openai(original_title)
|
64 |
if summarized_title:
|
65 |
+
# ๋งํฌ๊ฐ ์๋ ๋ด์ค ์ ๋ชฉ
|
66 |
+
url = item.get('url', '#') # ๊ธฐ์ฌ URL์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ๋งํฌ๋ '#'
|
67 |
st.markdown(f'''
|
68 |
<div class="headline-container">
|
69 |
+
<a href="{url}" target="_blank" style="text-decoration: none;">
|
70 |
+
<div class="headline-text">{summarized_title}</div>
|
71 |
+
</a>
|
72 |
</div>
|
73 |
''', unsafe_allow_html=True)
|
74 |
|
75 |
def main():
|
76 |
+
"""์ฑ ๋ฉ์ธ ํจ์"""
|
77 |
st.set_page_config(layout="wide")
|
78 |
|
79 |
st.markdown("""
|