Spaces:
Sleeping
Sleeping
import csv | |
import gradio as gr | |
from duckduckgo_search import DDGS | |
def search_duckduckgo(query: str, max_results: int = 1000): | |
results = [] | |
with DDGS() as ddgs: | |
for r in ddgs.text(query, max_results=max_results): | |
results.append(r['href']) | |
return results | |
def save_urls_to_csv(urls, filename="duckduckgo_search_urls.csv"): | |
with open(filename, mode='w', newline='', encoding='utf-8') as file: | |
writer = csv.writer(file) | |
writer.writerow(["URL"]) | |
for url in urls: | |
writer.writerow([url]) | |
return filename | |
def search_and_save(query, max_results): | |
urls = search_duckduckgo(query, max_results) | |
csv_file = save_urls_to_csv(urls) | |
return urls, csv_file | |
with gr.Blocks() as demo: | |
gr.Markdown("## π DuckDuckGo Search Interface") | |
with gr.Row(): | |
query_input = gr.Textbox(label="Search Query", placeholder="Enter your search query here") | |
max_results_input = gr.Slider(minimum=1, maximum=100, value=10, step=1, label="Max Results") | |
search_button = gr.Button("Search") | |
results_output = gr.Dataframe(headers=["URL"], label="Search Results") | |
download_output = gr.File(label="Download CSV") | |
def on_search_click(query, max_results): | |
urls, csv_file = search_and_save(query, max_results) | |
return [urls], csv_file | |
search_button.click( | |
fn=on_search_click, | |
inputs=[query_input, max_results_input], | |
outputs=[results_output, download_output] | |
) | |
demo.launch() | |