Spaces:
Running
Running
File size: 4,226 Bytes
09ebcd0 eec4d01 09ebcd0 6097fb2 1b298f9 34db24b 6097fb2 1b298f9 8415ea5 6097fb2 eec4d01 8415ea5 eec4d01 1b298f9 6097fb2 eec4d01 6097fb2 ba53ac8 6097fb2 ba53ac8 1b298f9 6097fb2 2748048 2196362 440c29c ef406af 440c29c 73ed8f5 ba53ac8 dc63a3a ebc2f8d c43d42c 2748048 dc63a3a 2748048 dc63a3a 2748048 ebc2f8d dc63a3a 2196362 440c29c ef406af dc63a3a 2748048 c5cb552 dc63a3a ba53ac8 2748048 dc63a3a 2196362 efb5f18 440c29c 158b524 8415ea5 440c29c 68a8b0c 43da967 ba53ac8 6097fb2 ab30506 2748048 ad0f104 d0b4b99 2748048 2196362 d0b4b99 2748048 440c29c 43da967 ad0f104 2748048 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
import gradio as gr
import requests
import json
API_KEY = "V38CNn4HXpLtynJQyOeoUensTEYoFy8PBUxKpDqAW1pawT1vfJ2BWtPQ98h6"
MAJOR_COUNTRIES = [
"United States", "United Kingdom", "Canada", "Australia", "Germany",
"France", "Japan", "South Korea", "China", "India",
"Brazil", "Mexico", "Russia", "Italy", "Spain",
"Netherlands", "Sweden", "Switzerland", "Norway", "Denmark",
"Finland", "Belgium", "Austria", "New Zealand", "Ireland",
"Singapore", "Hong Kong", "Israel", "United Arab Emirates", "Saudi Arabia",
"South Africa", "Turkey", "Egypt", "Poland", "Czech Republic",
"Hungary", "Greece", "Portugal", "Argentina", "Chile",
"Colombia", "Peru", "Venezuela", "Thailand", "Malaysia",
"Indonesia", "Philippines", "Vietnam", "Pakistan", "Bangladesh"
]
def search_serphouse(query, country, page, num_result):
url = "https://api.serphouse.com/serp/live"
payload = {
"data": {
"q": query,
"domain": "google.com",
"loc": country,
"lang": "en",
"device": "desktop",
"serp_type": "news",
"page": str(page),
"verbatim": "1",
"num": str(num_result)
}
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": f"Bearer {API_KEY}"
}
try:
response = requests.post(url, json=payload, headers=headers)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
return f"Error: {str(e)}"
def format_results(results):
all_results = "## ๋ชจ๋ ๋ด์ค ๊ฒฐ๊ณผ\n\n"
result_table = "## ๋ด์ค ๊ฒฐ๊ณผ ํ\n\n"
result_table += "| ์ ๋ชฉ | ๋งํฌ | ์๊ฐ | ์ถ์ฒ |\n"
result_table += "|------|------|------|------|\n"
debug_info = "## ๋๋ฒ๊ทธ ์ ๋ณด\n\n"
debug_info += f"Raw API Response:\n```json\n{json.dumps(results, indent=2)}\n```\n\n"
try:
if not isinstance(results, dict):
raise ValueError("Results is not a dictionary")
if "results" not in results:
raise ValueError("No 'results' key in the response")
news_results = results["results"].get("news", [])
debug_info += f"๋ด์ค ๊ฒฐ๊ณผ ์: {len(news_results)}\n\n"
for result in news_results:
title = result.get("title", "์ ๋ชฉ ์์")
url = result.get("url", "#")
snippet = result.get("snippet", "๋ด์ฉ ์์")
channel = result.get("channel", "์ ์ ์์")
time_str = result.get("time", "์ ์ ์๋ ์๊ฐ")
# ๊ฒฐ๊ณผ ํ์ ํ ์ถ๊ฐ
result_table += f"| {title[:30]}... | [{url[:30]}...]({url}) | {time_str} | {channel} |\n"
article_info = f"""
### [{title}]({url})
{snippet}
**์ถ์ฒ:** {channel} - {time_str}
---
"""
all_results += article_info
except Exception as e:
error_message = f"๊ฒฐ๊ณผ ์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}"
debug_info += error_message + "\n"
all_results = error_message + "\n\n"
result_table += f"| ์ค๋ฅ ๋ฐ์ | - | - | - |\n"
return all_results, result_table + "\n\n" + debug_info
def serphouse_search(query, country, page, num_result):
results = search_serphouse(query, country, page, num_result)
all_results, result_table_and_debug = format_results(results)
return all_results, result_table_and_debug
css = """
footer {
visibility: hidden;
}
"""
iface = gr.Interface(
fn=serphouse_search,
inputs=[
gr.Textbox(label="๊ฒ์์ด"),
gr.Dropdown(MAJOR_COUNTRIES, label="๊ตญ๊ฐ"),
gr.Slider(1, 10, 1, label="ํ์ด์ง"),
gr.Slider(1, 100, 10, label="๊ฒฐ๊ณผ ์")
],
outputs=[
gr.Markdown(label="๋ชจ๋ ๊ฒฐ๊ณผ"),
gr.Markdown(label="๊ฒฐ๊ณผ ํ ๋ฐ ๋๋ฒ๊ทธ ์ ๋ณด")
],
title="SERPHouse ๋ด์ค ๊ฒ์ ์ธํฐํ์ด์ค",
description="๊ฒ์์ด๋ฅผ ์
๋ ฅํ๊ณ ๊ตญ๊ฐ๋ฅผ ์ ํํ์ฌ SERPHouse API์์ ๋ด์ค ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.",
theme="Nymbo/Nymbo_Theme",
css=css
)
iface.launch() |