Spaces:
Sleeping
Sleeping
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) | |