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)