Shreyas094 commited on
Commit
f02770e
·
verified ·
1 Parent(s): 00536e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -28
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() # Raise an exception for bad status codes
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
- print(f"An error occurred: {e}")
34
- return []
35
 
36
- def display_news(news_items):
 
37
  for i, item in enumerate(news_items, 1):
38
- print(f"\n{i}. {item['title']}")
39
- print(f" URL: {item['url']}")
40
- print(f" Published: {item.get('publishedDate', 'N/A')}")
41
- print(f" Content: {item.get('content', 'N/A')[:150]}...")
42
-
43
- if __name__ == "__main__":
44
- search_query = input("Enter a news topic to search for: ")
45
- news_results = search_news(search_query)
46
-
47
- if news_results:
48
- print(f"\nFound {len(news_results)} news items:")
49
- display_news(news_results)
50
- else:
51
- print("No news items found or an error occurred.")
 
 
 
 
 
 
 
 
 
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()