JAMESPARK3 commited on
Commit
ba2ff4d
ยท
verified ยท
1 Parent(s): 450e74e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -5
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
- """๋‰ด์Šค ์š”์•ฝ์„ ์œ„ํ•ด OpenAI GPT-4o-mini ๋ชจ๋ธ ํ˜ธ์ถœ"""
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
- <div class="headline-text">{summarized_title}</div>
 
 
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("""