image-gen-mcp / app.py
baxin's picture
Update app.py
d09190e verified
raw
history blame
1.64 kB
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)