Pavan178 commited on
Commit
16a610b
·
verified ·
1 Parent(s): adb99bc

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -0
app.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import csv
2
+ import gradio as gr
3
+ from duckduckgo_search import DDGS
4
+
5
+ def search_duckduckgo(query: str, max_results: int = 100):
6
+ results = []
7
+ with DDGS() as ddgs:
8
+ for r in ddgs.text(query, max_results=max_results):
9
+ results.append(r['href'])
10
+ return results
11
+
12
+ def save_urls_to_csv(urls, filename="duckduckgo_search_urls.csv"):
13
+ with open(filename, mode='w', newline='', encoding='utf-8') as file:
14
+ writer = csv.writer(file)
15
+ writer.writerow(["URL"])
16
+ for url in urls:
17
+ writer.writerow([url])
18
+ return filename
19
+
20
+ def search_and_save(query, max_results):
21
+ urls = search_duckduckgo(query, max_results)
22
+ csv_file = save_urls_to_csv(urls)
23
+ return urls, csv_file
24
+
25
+ with gr.Blocks() as demo:
26
+ gr.Markdown("## 🔍 DuckDuckGo Search Interface")
27
+ with gr.Row():
28
+ query_input = gr.Textbox(label="Search Query", placeholder="Enter your search query here")
29
+ max_results_input = gr.Slider(minimum=1, maximum=100, value=10, step=1, label="Max Results")
30
+ search_button = gr.Button("Search")
31
+ results_output = gr.Dataframe(headers=["URL"], label="Search Results")
32
+ download_output = gr.File(label="Download CSV")
33
+
34
+ def on_search_click(query, max_results):
35
+ urls, csv_file = search_and_save(query, max_results)
36
+ return [urls], csv_file
37
+
38
+ search_button.click(
39
+ fn=on_search_click,
40
+ inputs=[query_input, max_results_input],
41
+ outputs=[results_output, download_output]
42
+ )
43
+
44
+ demo.launch()