Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,11 +1,9 @@
|
|
|
|
1 |
import requests
|
2 |
import json
|
3 |
|
4 |
def search_news(query, num_results=10):
|
5 |
-
# SearXNG instance URL (you may need to replace this with a working instance)
|
6 |
searxng_url = "https://searx.be/search"
|
7 |
-
|
8 |
-
# Parameters for the search request
|
9 |
params = {
|
10 |
"q": query,
|
11 |
"categories": "news",
|
@@ -16,36 +14,37 @@ def search_news(query, num_results=10):
|
|
16 |
"engines": "google_news,bing_news,yahoo_news",
|
17 |
"results": num_results
|
18 |
}
|
19 |
-
|
20 |
try:
|
21 |
-
# Send the request to SearXNG
|
22 |
response = requests.get(searxng_url, params=params)
|
23 |
-
response.raise_for_status()
|
24 |
-
|
25 |
-
# Parse the JSON response
|
26 |
results = response.json()
|
27 |
-
|
28 |
-
# Extract and return the news items
|
29 |
news_items = results.get("results", [])
|
30 |
return news_items
|
31 |
-
|
32 |
except requests.RequestException as e:
|
33 |
-
|
34 |
-
return []
|
35 |
|
36 |
-
def
|
|
|
37 |
for i, item in enumerate(news_items, 1):
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
import requests
|
3 |
import json
|
4 |
|
5 |
def search_news(query, num_results=10):
|
|
|
6 |
searxng_url = "https://searx.be/search"
|
|
|
|
|
7 |
params = {
|
8 |
"q": query,
|
9 |
"categories": "news",
|
|
|
14 |
"engines": "google_news,bing_news,yahoo_news",
|
15 |
"results": num_results
|
16 |
}
|
|
|
17 |
try:
|
|
|
18 |
response = requests.get(searxng_url, params=params)
|
19 |
+
response.raise_for_status()
|
|
|
|
|
20 |
results = response.json()
|
|
|
|
|
21 |
news_items = results.get("results", [])
|
22 |
return news_items
|
|
|
23 |
except requests.RequestException as e:
|
24 |
+
return [{"title": f"An error occurred: {e}", "url": "", "publishedDate": "", "content": ""}]
|
|
|
25 |
|
26 |
+
def format_news(news_items):
|
27 |
+
formatted_results = ""
|
28 |
for i, item in enumerate(news_items, 1):
|
29 |
+
formatted_results += f"{i}. {item['title']}\n"
|
30 |
+
formatted_results += f" URL: {item['url']}\n"
|
31 |
+
formatted_results += f" Published: {item.get('publishedDate', 'N/A')}\n"
|
32 |
+
formatted_results += f" Content: {item.get('content', 'N/A')[:150]}...\n\n"
|
33 |
+
return formatted_results
|
34 |
+
|
35 |
+
def gradio_search_news(query, num_results):
|
36 |
+
news_items = search_news(query, int(num_results))
|
37 |
+
return format_news(news_items)
|
38 |
+
|
39 |
+
iface = gr.Interface(
|
40 |
+
fn=gradio_search_news,
|
41 |
+
inputs=[
|
42 |
+
gr.Textbox(label="Enter a news topic to search for"),
|
43 |
+
gr.Slider(minimum=1, maximum=20, value=10, step=1, label="Number of results")
|
44 |
+
],
|
45 |
+
outputs=gr.Textbox(label="Search Results", lines=20),
|
46 |
+
title="SearXNG News Search",
|
47 |
+
description="Search for news articles using SearXNG metasearch engine."
|
48 |
+
)
|
49 |
+
|
50 |
+
iface.launch()
|