openfree commited on
Commit
dcd9353
ยท
verified ยท
1 Parent(s): 65f1795

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -42
app.py CHANGED
@@ -77,32 +77,35 @@ def create_deepseek_interface():
77
 
78
  # ํ•œ๊ธ€ ๊ฒ€์ƒ‰์–ด์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์ ์ ˆํ•œ ์„ค์ • ์„ ํƒ
79
  is_korean = any('\uAC00' <= c <= '\uD7A3' for c in search_query)
80
- lang = "ko" if is_korean else "en"
81
- loc = "kr" if is_korean else "us"
82
 
83
- # MoneyRadar ๋ฐฉ์‹ ์ •ํ™•ํžˆ ๋”ฐ๋ฅด๊ธฐ - serp_type์„ news๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‚ ์งœ ๋ฒ”์œ„ ์ถ”๊ฐ€
84
  from datetime import datetime, timedelta
85
  now = datetime.utcnow()
86
  yesterday = now - timedelta(days=1)
87
  date_range = f"{yesterday.strftime('%Y-%m-%d')},{now.strftime('%Y-%m-%d')}"
88
 
89
- # SerpHouse API ํ˜ธ์ถœ ์‹คํ–‰ - POST ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ (MoneyRadar ์ฝ”๋“œ ์ฐธ๊ณ )
90
  url = "https://api.serphouse.com/serp/live"
91
 
92
- # MoneyRadar ๋ฐฉ์‹์œผ๋กœ ํŽ˜์ด๋กœ๋“œ ๊ตฌ์„ฑ
 
 
 
 
 
 
 
93
  payload = {
94
- "data": {
95
- "q": search_query.replace(',', ' ').strip(),
96
- "domain": "google.com",
97
- "loc": loc,
98
- "lang": lang,
99
- "device": "desktop",
100
- "serp_type": "news", # web์—์„œ news๋กœ ๋ณ€๊ฒฝ
101
- "page": "1",
102
- "num": "5",
103
- "date_range": date_range, # ๋‚ ์งœ ๋ฒ”์œ„ ์ถ”๊ฐ€
104
- "sort_by": "date" # ๋‚ ์งœ์ˆœ ์ •๋ ฌ ์ถ”๊ฐ€
105
- }
106
  }
107
 
108
  headers = {
@@ -115,14 +118,18 @@ def create_deepseek_interface():
115
  print(f"์š”์ฒญ ๋ฐฉ์‹: POST, ํŽ˜์ด๋กœ๋“œ: {payload}")
116
 
117
  # POST ์š”์ฒญ ์ˆ˜ํ–‰ (์„ธ์…˜๊ณผ ์žฌ์‹œ๋„ ๋กœ์ง ์ถ”๊ฐ€)
 
 
 
 
118
  session = requests.Session()
119
- retries = requests.packages.urllib3.util.retry.Retry(
120
  total=5,
121
  backoff_factor=1,
122
  status_forcelist=[500, 502, 503, 504, 429],
123
  allowed_methods=["POST"]
124
  )
125
- adapter = requests.adapters.HTTPAdapter(max_retries=retries)
126
  session.mount('http://', adapter)
127
  session.mount('https://', adapter)
128
 
@@ -136,40 +143,47 @@ def create_deepseek_interface():
136
  response.raise_for_status()
137
 
138
  print(f"SerpHouse API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {response.status_code}")
139
- search_results = response.json()
140
 
141
- # MoneyRadar์˜ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋ถ„์„ ๋ฐ ์ ์šฉ
 
 
 
 
 
 
142
  print(f"์‘๋‹ต ๊ตฌ์กฐ: {list(search_results.keys()) if isinstance(search_results, dict) else '๋”•์…”๋„ˆ๋ฆฌ ์•„๋‹˜'}")
143
 
144
- # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŒŒ์‹ฑ ๋ฐ ํฌ๋งทํŒ…
145
  formatted_results = []
146
  formatted_results.append(f"๊ฒ€์ƒ‰์–ด: {search_query}\n\n")
147
 
148
  # ๊ฒฐ๊ณผ ๊ตฌ์กฐ ํŒŒ์‹ฑ (MoneyRadar์™€ ๋™์ผํ•˜๊ฒŒ)
149
  if "results" in search_results and "results" in search_results["results"]:
150
- # ๋‰ด์Šค ๊ฒฐ๊ณผ ํŒŒ์‹ฑ
151
- news_results = search_results["results"]["results"].get("news", [])
152
- if news_results:
153
- for result in news_results[:5]:
154
- title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
155
- snippet = result.get("snippet", "๋‚ด์šฉ ์—†์Œ")
156
- url = result.get("url", result.get("link", "#"))
157
- source = result.get("source", result.get("channel", "์•Œ ์ˆ˜ ์—†์Œ"))
158
- time = result.get("time", result.get("date", "์‹œ๊ฐ„ ์ •๋ณด ์—†์Œ"))
 
 
 
 
 
 
 
 
 
159
 
160
- formatted_results.append(
161
- f"์ œ๋ชฉ: {title}\n"
162
- f"์ถœ์ฒ˜: {source}\n"
163
- f"์‹œ๊ฐ„: {time}\n"
164
- f"๋‚ด์šฉ: {snippet}\n"
165
- f"๋งํฌ: {url}\n\n"
166
- )
167
-
168
- print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(news_results)}๊ฐœ ์ฐพ์Œ")
169
- return "".join(formatted_results)
170
 
171
  print("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ๋˜๋Š” ์‘๋‹ต ํ˜•์‹ ๋ถˆ์ผ์น˜")
172
- print(f"์‘๋‹ต ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: {str(search_results)[:300]}...")
173
  return f"๊ฒ€์ƒ‰์–ด '{search_query}'์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†๊ฑฐ๋‚˜ API ์‘๋‹ต ํ˜•์‹์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
174
 
175
  except Exception as e:
 
77
 
78
  # ํ•œ๊ธ€ ๊ฒ€์ƒ‰์–ด์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์ ์ ˆํ•œ ์„ค์ • ์„ ํƒ
79
  is_korean = any('\uAC00' <= c <= '\uD7A3' for c in search_query)
 
 
80
 
81
+ # MoneyRadar ๋ฐฉ์‹ ์ •ํ™•ํžˆ ๋”ฐ๋ฅด๊ธฐ
82
  from datetime import datetime, timedelta
83
  now = datetime.utcnow()
84
  yesterday = now - timedelta(days=1)
85
  date_range = f"{yesterday.strftime('%Y-%m-%d')},{now.strftime('%Y-%m-%d')}"
86
 
87
+ # SerpHouse API ํ˜ธ์ถœ ์‹คํ–‰ - POST ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ (MoneyRadar ์ฝ”๋“œ ์ •ํ™•ํžˆ ๋”ฐ๋ฅด๊ธฐ)
88
  url = "https://api.serphouse.com/serp/live"
89
 
90
+ # ๊ตญ๊ฐ€ ์„ค์ •
91
+ country = "KOREA" if is_korean else "United States"
92
+
93
+ # COUNTRY_LOCATIONS๊ณผ COUNTRY_LANGUAGES ์ •์˜ (MoneyRadar์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋งคํ•‘)
94
+ COUNTRY_LOCATIONS = {"United States": "United States", "KOREA": "kr"}
95
+ COUNTRY_LANGUAGES = {"United States": "en", "KOREA": "ko"}
96
+
97
+ # MoneyRadar ๋ฐฉ์‹์œผ๋กœ ํŽ˜์ด๋กœ๋“œ ๊ตฌ์„ฑ (100๊ฐœ ๊ฒฐ๊ณผ ์š”์ฒญ)
98
  payload = {
99
+ "q": search_query.replace(',', ' ').strip(),
100
+ "domain": "google.com",
101
+ "loc": COUNTRY_LOCATIONS.get(country, "United States"),
102
+ "lang": COUNTRY_LANGUAGES.get(country, "en"),
103
+ "device": "desktop",
104
+ "serp_type": "news",
105
+ "page": "1",
106
+ "num": "100",
107
+ "date_range": date_range,
108
+ "sort_by": "date"
 
 
109
  }
110
 
111
  headers = {
 
118
  print(f"์š”์ฒญ ๋ฐฉ์‹: POST, ํŽ˜์ด๋กœ๋“œ: {payload}")
119
 
120
  # POST ์š”์ฒญ ์ˆ˜ํ–‰ (์„ธ์…˜๊ณผ ์žฌ์‹œ๋„ ๋กœ์ง ์ถ”๊ฐ€)
121
+ import requests
122
+ from requests.adapters import HTTPAdapter
123
+ from requests.packages.urllib3.util.retry import Retry
124
+
125
  session = requests.Session()
126
+ retries = Retry(
127
  total=5,
128
  backoff_factor=1,
129
  status_forcelist=[500, 502, 503, 504, 429],
130
  allowed_methods=["POST"]
131
  )
132
+ adapter = HTTPAdapter(max_retries=retries)
133
  session.mount('http://', adapter)
134
  session.mount('https://', adapter)
135
 
 
143
  response.raise_for_status()
144
 
145
  print(f"SerpHouse API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {response.status_code}")
146
+ response_data = response.json()
147
 
148
+ # MoneyRadar ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
149
+ search_results = {
150
+ "results": response_data,
151
+ "translated_query": search_query
152
+ }
153
+
154
+ # ์‘๋‹ต ๊ตฌ์กฐ ๋กœ๊น…
155
  print(f"์‘๋‹ต ๊ตฌ์กฐ: {list(search_results.keys()) if isinstance(search_results, dict) else '๋”•์…”๋„ˆ๋ฆฌ ์•„๋‹˜'}")
156
 
157
+ # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŒŒ์‹ฑ ๋ฐ ํฌ๋งทํŒ… (MoneyRadar format_results_from_raw ํ•จ์ˆ˜ ์ฐธ๊ณ )
158
  formatted_results = []
159
  formatted_results.append(f"๊ฒ€์ƒ‰์–ด: {search_query}\n\n")
160
 
161
  # ๊ฒฐ๊ณผ ๊ตฌ์กฐ ํŒŒ์‹ฑ (MoneyRadar์™€ ๋™์ผํ•˜๊ฒŒ)
162
  if "results" in search_results and "results" in search_results["results"]:
163
+ if "results" in search_results["results"]["results"]:
164
+ # ๋‰ด์Šค ๊ฒฐ๊ณผ ํŒŒ์‹ฑ
165
+ news_results = search_results["results"]["results"]["results"].get("news", [])
166
+ if news_results:
167
+ for result in news_results[:5]: # ์ƒ์œ„ 5๊ฐœ๋งŒ ํ‘œ์‹œ
168
+ title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
169
+ snippet = result.get("snippet", "๋‚ด์šฉ ์—†์Œ")
170
+ url = result.get("url", result.get("link", "#"))
171
+ source = result.get("source", result.get("channel", "์•Œ ์ˆ˜ ์—†์Œ"))
172
+ time = result.get("time", result.get("date", "์‹œ๊ฐ„ ์ •๋ณด ์—†์Œ"))
173
+
174
+ formatted_results.append(
175
+ f"์ œ๋ชฉ: {title}\n"
176
+ f"์ถœ์ฒ˜: {source}\n"
177
+ f"์‹œ๊ฐ„: {time}\n"
178
+ f"๋‚ด์šฉ: {snippet}\n"
179
+ f"๋งํฌ: {url}\n\n"
180
+ )
181
 
182
+ print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(news_results)}๊ฐœ ์ฐพ์Œ")
183
+ return "".join(formatted_results)
 
 
 
 
 
 
 
 
184
 
185
  print("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ๋˜๋Š” ์‘๋‹ต ํ˜•์‹ ๋ถˆ์ผ์น˜")
186
+ print(f"์‘๋‹ต ๊ตฌ์กฐ: {search_results.keys() if hasattr(search_results, 'keys') else '๋ถˆ๋ช…ํ™•ํ•œ ๊ตฌ์กฐ'}")
187
  return f"๊ฒ€์ƒ‰์–ด '{search_query}'์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†๊ฑฐ๋‚˜ API ์‘๋‹ต ํ˜•์‹์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
188
 
189
  except Exception as e: