openfree commited on
Commit
3bf9017
ยท
verified ยท
1 Parent(s): 17082b6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -43
app.py CHANGED
@@ -75,73 +75,79 @@ def create_deepseek_interface():
75
  print(f"์›๋ณธ ์ฟผ๋ฆฌ: {query}")
76
  print(extraction_result)
77
 
78
- # ํ•œ๊ธ€ ๊ฒ€์ƒ‰์–ด๋Š” loc ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Œ
79
- # ํ•œ๊ธ€ ์‚ฌ์šฉ ์‹œ ํ•œ๊ตญ(kr) ๋กœ์ผ€์ผ๋กœ ๋ณ€๊ฒฝ
80
  is_korean = any('\uAC00' <= c <= '\uD7A3' for c in search_query)
81
- locale = "kr" if is_korean else "us"
 
82
 
83
- # SerpHouse API ํ˜ธ์ถœ ์‹คํ–‰ - GET ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
84
- base_url = "https://api.serphouse.com/serp/live"
85
 
86
- # URL ์ธ์ฝ”๋”ฉ๋œ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ (๊ณต๋ฐฑ์€ +๋กœ ๋ณ€ํ™˜)
87
- params = {
88
- "q": search_query.replace(',', ' ').strip(), # ์‰ผํ‘œ ์ œ๊ฑฐํ•˜๊ณ  ๊ณต๋ฐฑ์œผ๋กœ ๋Œ€์ฒด
89
- "domain": "google.com",
90
- "lang": "ko" if is_korean else "en", # ํ•œ๊ธ€์ด๋ฉด ํ•œ๊ตญ์–ด ์„ค์ •
91
- "device": "desktop",
92
- "serp_type": "web",
93
- "loc": locale, # ์œ„์น˜ ์ฝ”๋“œ
94
- "page": "1",
95
- "num": "5" # ์ƒ์œ„ 5๊ฐœ ๊ฒฐ๊ณผ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
 
 
96
  }
97
 
98
  headers = {
99
- "Authorization": f"Bearer {serphouse_api_key}"
 
 
100
  }
101
 
102
- print(f"SerpHouse API ํ˜ธ์ถœ ์ค‘... ๊ฒ€์ƒ‰์–ด: {params['q']}")
103
- print(f"์š”์ฒญ URL: {base_url}?q={params['q']}&domain=google.com&lang={params['lang']}&loc={locale}...")
104
 
105
- # GET ์š”์ฒญ ์ˆ˜ํ–‰
106
- response = requests.get(base_url, headers=headers, params=params)
107
  response.raise_for_status()
108
 
109
  print(f"SerpHouse API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {response.status_code}")
110
  search_results = response.json()
111
 
112
- # ์‘๋‹ต ๊ตฌ์กฐ ํ™•์ธ์„ ์œ„ํ•œ ๋กœ๊น…
113
- print(f"์‘๋‹ต ๊ตฌ์กฐ: {list(search_results.keys())}")
114
- if "results" in search_results:
115
- print(f"results ๊ตฌ์กฐ: {list(search_results['results'].keys()) if isinstance(search_results['results'], dict) else '๋ฆฌ์ŠคํŠธ'}")
116
 
117
  # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŒŒ์‹ฑ ๋ฐ ํฌ๋งทํŒ…
118
  formatted_results = []
119
- formatted_results.append(f"๊ฒ€์ƒ‰์–ด: {params['q']}\n\n")
120
 
121
- # ์‘๋‹ต ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ํŒŒ์‹ฑ
122
- if "results" in search_results and "organic" in search_results["results"] and len(search_results["results"]["organic"]) > 0:
123
- for result in search_results["results"]["organic"][:5]: # ์ƒ์œ„ 5๊ฐœ ๊ฒฐ๊ณผ๋งŒ ์‚ฌ์šฉ
124
- title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
125
- snippet = result.get("snippet", "๋‚ด์šฉ ์—†์Œ")
126
- link = result.get("link", "#")
127
- formatted_results.append(f"์ œ๋ชฉ: {title}\n๋‚ด์šฉ: {snippet}\n๋งํฌ: {link}\n\n")
128
-
129
- print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(search_results['results']['organic'])}๊ฐœ ์ฐพ์Œ")
130
- return "".join(formatted_results)
131
- elif "organic" in search_results and len(search_results["organic"]) > 0:
132
- # ๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ
133
- for result in search_results["organic"][:5]:
 
 
 
 
134
  title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
135
  snippet = result.get("snippet", "๋‚ด์šฉ ์—†์Œ")
136
  link = result.get("link", "#")
137
  formatted_results.append(f"์ œ๋ชฉ: {title}\n๋‚ด์šฉ: {snippet}\n๋งํฌ: {link}\n\n")
138
 
139
- print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(search_results['organic'])}๊ฐœ ์ฐพ์Œ")
140
  return "".join(formatted_results)
141
- else:
142
- print("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ๋˜๋Š” ์‘๋‹ต ํ˜•์‹ ๋ถˆ์ผ์น˜")
143
- print(f"์‘๋‹ต ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: {str(search_results)[:300]}...")
144
- return f"๊ฒ€์ƒ‰์–ด '{params['q']}'์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†๊ฑฐ๋‚˜ API ์‘๋‹ต ํ˜•์‹์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
145
 
146
  except Exception as e:
147
  error_msg = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
 
75
  print(f"์›๋ณธ ์ฟผ๋ฆฌ: {query}")
76
  print(extraction_result)
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
+ # SerpHouse API ํ˜ธ์ถœ ์‹คํ–‰ - POST ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ (MoneyRadar ์ฝ”๋“œ ์ฐธ๊ณ )
84
+ url = "https://api.serphouse.com/serp/live"
85
 
86
+ # MoneyRadar ๋ฐฉ์‹์œผ๋กœ ํŽ˜์ด๋กœ๋“œ ๊ตฌ์„ฑ
87
+ payload = {
88
+ "data": {
89
+ "q": search_query.replace(',', ' ').strip(),
90
+ "domain": "google.com",
91
+ "loc": loc,
92
+ "lang": lang,
93
+ "device": "desktop",
94
+ "serp_type": "web",
95
+ "page": "1",
96
+ "num": "5"
97
+ }
98
  }
99
 
100
  headers = {
101
+ "accept": "application/json",
102
+ "content-type": "application/json",
103
+ "authorization": f"Bearer {serphouse_api_key}"
104
  }
105
 
106
+ print(f"SerpHouse API ํ˜ธ์ถœ ์ค‘... ๊ฒ€์ƒ‰์–ด: {search_query}")
107
+ print(f"์š”์ฒญ ๋ฐฉ์‹: POST, ํŽ˜์ด๋กœ๋“œ: {payload}")
108
 
109
+ # POST ์š”์ฒญ ์ˆ˜ํ–‰
110
+ response = requests.post(url, json=payload, headers=headers, timeout=(30, 30))
111
  response.raise_for_status()
112
 
113
  print(f"SerpHouse API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {response.status_code}")
114
  search_results = response.json()
115
 
116
+ # ์‘๋‹ต ๊ตฌ์กฐ ๋กœ๊น…
117
+ print(f"์‘๋‹ต ๊ตฌ์กฐ: {list(search_results.keys()) if isinstance(search_results, dict) else '๋”•์…”๋„ˆ๋ฆฌ ์•„๋‹˜'}")
 
 
118
 
119
  # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŒŒ์‹ฑ ๋ฐ ํฌ๋งทํŒ…
120
  formatted_results = []
121
+ formatted_results.append(f"๊ฒ€์ƒ‰์–ด: {search_query}\n\n")
122
 
123
+ if "results" in search_results:
124
+ results = search_results["results"]
125
+ if "organic" in results:
126
+ organic_results = results["organic"]
127
+ for result in organic_results[:5]: # ์ƒ์œ„ 5๊ฐœ ๊ฒฐ๊ณผ๋งŒ ์‚ฌ์šฉ
128
+ title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
129
+ snippet = result.get("snippet", "๋‚ด์šฉ ๏ฟฝ๏ฟฝ๏ฟฝ์Œ")
130
+ link = result.get("link", "#")
131
+ formatted_results.append(f"์ œ๋ชฉ: {title}\n๋‚ด์šฉ: {snippet}\n๋งํฌ: {link}\n\n")
132
+
133
+ print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(organic_results)}๊ฐœ ์ฐพ์Œ")
134
+ return "".join(formatted_results)
135
+
136
+ # ๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ ๊ตฌ์กฐ ํ™•์ธ
137
+ if isinstance(search_results, dict) and "organic" in search_results:
138
+ organic_results = search_results["organic"]
139
+ for result in organic_results[:5]:
140
  title = result.get("title", "์ œ๋ชฉ ์—†์Œ")
141
  snippet = result.get("snippet", "๋‚ด์šฉ ์—†์Œ")
142
  link = result.get("link", "#")
143
  formatted_results.append(f"์ œ๋ชฉ: {title}\n๋‚ด์šฉ: {snippet}\n๋งํฌ: {link}\n\n")
144
 
145
+ print(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(organic_results)}๊ฐœ ์ฐพ์Œ")
146
  return "".join(formatted_results)
147
+
148
+ print("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ๋˜๋Š” ์‘๋‹ต ํ˜•์‹ ๋ถˆ์ผ์น˜")
149
+ print(f"์‘๋‹ต ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: {str(search_results)[:300]}...")
150
+ return f"๊ฒ€์ƒ‰์–ด '{search_query}'์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†๊ฑฐ๋‚˜ API ์‘๋‹ต ํ˜•์‹์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
151
 
152
  except Exception as e:
153
  error_msg = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"