Spaces:
Running
Running
File size: 1,638 Bytes
ebcfb0d d09190e ebcfb0d d09190e ebcfb0d d09190e ebcfb0d d09190e ebcfb0d d09190e ebcfb0d d09190e ebcfb0d d09190e |
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 |
import gradio as gr
from duckduckgo_search import DDGS
def news(
keywords: str,
region: str = "wt-wt",
safesearch: str = "moderate",
timelimit: str | None = None,
max_results: int | None = None,
) -> list[dict[str, str]]:
"""DuckDuckGo news search. Query params: https://duckduckgo.com/params.
Args:
keywords: keywords for query.
region: wt-wt, us-en, uk-en, ru-ru, etc. Defaults to "wt-wt".
safesearch: on, moderate, off. Defaults to "moderate".
timelimit: d, w, m. Defaults to None.
max_results: max number of results. If None, returns results only from the first response. Defaults to None.
Returns:
List of dictionaries with news search results.
"""
# Fix: Use the keywords parameter instead of hardcoded "sun"
results = DDGS().news(keywords=keywords, region=region,
safesearch=safesearch, timelimit=timelimit, max_results=max_results)
return list(results) # Convert generator to list and return it
# Create a Gradio interface for the news function
demo = gr.Interface(
fn=news,
inputs=[
gr.Textbox(label="Keywords"),
gr.Dropdown(["wt-wt", "us-en", "uk-en"],
label="Region", value="wt-wt"),
gr.Dropdown(["on", "moderate", "off"],
label="Safe Search", value="moderate"),
gr.Dropdown([None, "d", "w", "m"], label="Time Limit", value=None),
gr.Number(label="Max Results", value=10)
],
outputs=gr.JSON(),
title="News Search",
description="Search for news using DuckDuckGo"
)
demo.launch(mcp_server=True)
|