Ë
    cQêj!  ã                   óR  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ  ej                  e«      Z ed«      Zej!                  «       	 	 	 	 	 	 d ded	ed
ededz  dedededeeeef      fd„«       Zej!                  «       	 	 	 	 	 	 	 	 	 	 	 d!ded	ed
ededz  dededededz  dedz  dedz  dedz  dedz  deeeef      fd„«       Zej!                  «       	 	 	 	 	 	 d ded	ed
ededz  dedededeeeef      fd„«       Zej!                  «       	 	 	 	 	 	 	 	 	 d"ded	ed
ededz  dededededz  dedz  dedz  deeeef      fd„«       Zej!                  «       	 	 	 d#dededededeeeef      f
d„«       Zej!                  «       d$dededeeeez  f   fd„«       Zy)%zMCP server for DDGS.é    N)ÚAny)Ú	MCPServer)ÚDDGS)Ú_expand_proxy_tb_aliaszddgs-searchÚqueryÚregionÚ
safesearchÚ	timelimitÚmax_resultsÚpageÚbackendÚreturnc           	   ƒ   ó~   ‡ ‡‡‡‡‡‡K  — t        j                  ˆˆˆˆ ˆˆˆfd„«      ƒ d{  –—† }t        |«      S 7 Œ­w)að  Perform a text search using DDGS.

    Args:
        query: Search query string
        region: Region for search (e.g., us-en, uk-en, ru-ru)
        safesearch: Safe search setting (on, moderate, off)
        timelimit: Time limit (d, w, m, y) or custom date range
        max_results: Maximum number of results to return
        page: Page number of results
        backend: Search backend (auto, or specific engine)

    Returns:
        List of search results with title, href, and body

    c            	      ó”   •— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰‰‰‰‰‰ ¬«      S ©NÚ
DDGS_PROXY©Úproxy)r   r   r	   r
   r   r   r   )r   r   ÚosÚenvironÚgetÚtext©r   r   r   r   r   r	   r
   s   €€€€€€€úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/api_server/mcp.pyú<lambda>zsearch_text.<locals>.<lambda>-   óE   ø€ ”Ô1´"·*±*·.±.ÀÓ2NÓOÔP×UÑUØØØ!ØØ#ØØð Vó 
€ ó    N©ÚasyncioÚ	to_threadÚlist©r   r   r	   r
   r   r   r   Úresultss   ``````` r   Úsearch_textr$      ó9   þè ø€ ô2 ×%Ñ%÷	
ñ 	
ó
÷ 
€Gô �‹=Ðð
úó   ‰"=«;¬=ÚsizeÚcolorÚ
type_imageÚlayoutÚlicense_imagec              ƒ   ó’   ‡ ‡‡‡‡‡‡‡‡‡	‡
‡K  — t        j                  ˆˆˆ
ˆˆˆˆ ˆˆˆˆˆ	fd„«      ƒ d{  –—† }t        |«      S 7 Œ­w)a  Perform an image search using DDGS.

    Args:
        query: Image search query string
        region: Region for search (e.g., us-en, uk-en, ru-ru)
        safesearch: Safe search setting (on, moderate, off)
        timelimit: Time limit (d, w, m, y) or custom date range
        max_results: Maximum number of results to return
        page: Page number of results
        backend: Search backend (auto, or specific engine)
        size: Image size (Small, Medium, Large, Wallpaper)
        color: Image color filter
        type_image: Image type (photo, clipart, gif, transparent, line)
        layout: Image layout (Square, Tall, Wide)
        license_image: Image license filter

    Returns:
        List of image search results with title, image URL, and source

    c                  óž   •— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰‰‰
‰‰‰ ‰	‰‰‰‰¬«      S )Nr   r   )r   r   r	   r
   r   r   r   r'   r(   r)   r*   r+   )r   r   r   r   r   Úimages)r   r(   r*   r+   r   r   r   r   r	   r'   r
   r)   s   €€€€€€€€€€€€r   r   zsearch_images.<locals>.<lambda>^   sT   ø€ ”Ô1´"·*±*·.±.ÀÓ2NÓOÔP×WÑWØØØ!ØØ#ØØØØØ!ØØ'ð Xó 
€ r   Nr   )r   r   r	   r
   r   r   r   r'   r(   r)   r*   r+   r#   s   ```````````` r   Úsearch_imagesr/   :   s;   ÿûè ø€ ôF ×%Ñ%÷	
ö 	
ó÷ €Gô  �‹=Ðð!ús   Ž'AµA¶Ac           	   ƒ   ó~   ‡ ‡‡‡‡‡‡K  — t        j                  ˆˆˆˆ ˆˆˆfd„«      ƒ d{  –—† }t        |«      S 7 Œ­w)aú  Perform a news search using DDGS.

    Args:
        query: News search query string
        region: Region for search (e.g., us-en, uk-en, ru-ru)
        safesearch: Safe search setting (on, moderate, off)
        timelimit: Time limit (d, w, m, y) or custom date range
        max_results: Maximum number of results to return
        page: Page number of results
        backend: Search backend (auto, or specific engine)

    Returns:
        List of news results with title, URL, source, and date

    c            	      ó”   •— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰‰‰‰‰‰ ¬«      S r   )r   r   r   r   r   Únewsr   s   €€€€€€€r   r   zsearch_news.<locals>.<lambda>Š   r   r   Nr   r"   s   ``````` r   Úsearch_newsr3   p   r%   r&   Ú
resolutionÚdurationÚlicense_videosc
              ƒ   óŠ   ‡ ‡‡‡‡‡‡‡‡‡	K  — t        j                  ˆˆˆ	ˆˆˆ ˆˆˆˆf
d„«      ƒ d{  –—† }
t        |
«      S 7 Œ­w)aª  Perform a video search using DDGS.

    Args:
        query: Video search query string
        region: Region for search (e.g., us-en, uk-en, ru-ru)
        safesearch: Safe search setting (on, moderate, off)
        timelimit: Time limit (d, w, m) or custom date range
        max_results: Maximum number of results to return
        page: Page number of results
        backend: Search backend (auto, or specific engine)
        resolution: Video resolution (high, standard)
        duration: Video duration (short, medium, long)
        license_videos: Video license (creativeCommon, youtube)

    Returns:
        List of video search results with title, URL, and metadata

    c                  óš   •
— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰‰‰	‰‰‰ ‰‰‰¬«
      S )Nr   r   )
r   r   r	   r
   r   r   r   r4   r5   r6   )r   r   r   r   r   Úvideos)
r   r5   r6   r   r   r   r   r4   r	   r
   s
   €€€€€€€€€€r   r   zsearch_videos.<locals>.<lambda>·   sN   ø€ ”Ô1´"·*±*·.±.ÀÓ2NÓOÔP×WÑWØØØ!ØØ#ØØØ!ØØ)ð Xó 
€ r   Nr   )r   r   r	   r
   r   r   r   r4   r5   r6   r#   s   `````````` r   Úsearch_videosr:   —   s:   ÿùè ø€ ô> ×%Ñ%÷	
ô 	
ó÷ €Gô �‹=Ððús   Œ%A±A²Ac              ƒ   ór   ‡ ‡‡‡K  — t        j                  ˆˆˆˆ fd„«      ƒ d{  –—† }t        |«      S 7 Œ­w)aG  Perform a book search using DDGS.

    Args:
        query: Books search query string
        max_results: Maximum number of results to return
        page: Page number of results
        backend: Search backend (auto, or specific engine)

    Returns:
        List of book search results with title, author, and metadata

    c                  óŽ   •— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰‰‰ ¬«      S )Nr   r   )r   r   r   r   )r   r   r   r   r   Úbooks)r   r   r   r   s   €€€€r   r   zsearch_books.<locals>.<lambda>Û   s<   ø€ ”Ô1´"·*±*·.±.ÀÓ2NÓOÔP×VÑVØØ#ØØð	 Wó 
€ r   Nr   )r   r   r   r   r#   s   ```` r   Úsearch_booksr>   Ç   s4   ûè ø€ ô& ×%Ñ%ö	
ó÷ €Gô �‹=Ððús   †7¥5¦7ÚurlÚfmtc              ƒ   óT   ‡ ‡K  — t        j                  ˆˆ fd„«      ƒ d{  –—† S 7 Œ­w)a  Extract content from a URL.

    Args:
        url: The URL to fetch and extract content from.
        fmt: Output format: "text_markdown", "text_plain", "text_rich", "text" (raw HTML), "content" (raw bytes).

    Returns:
        Dictionary with url and content keys.

    c                  óŠ   •— t        t        t        j                  j	                  d«      «      ¬«      j                  ‰‰ ¬«      S )Nr   r   ©r?   r@   )r   r   r   r   r   Úextract)r@   r?   s   €€r   r   z!extract_content.<locals>.<lambda>ò   s6   ø€ ”Ô1´"·*±*·.±.ÀÓ2NÓOÔP×XÑXØØð Yó 
€ r   N)r   r    rC   s   ``r   Úextract_contentrE   å   s+   ùè ø€ ô ×"Ñ"ô	
ó÷ ð ð ús   „(¡&¢()úus-enÚmoderateNé
   é   Úauto)rF   rG   NrH   rI   rJ   NNNNN)	rF   rG   NrH   rI   rJ   NNN)rH   rI   rJ   )Útext_markdown)Ú__doc__r   Úloggingr   Útypingr   Úmcp.server.mcpserverr   Úddgsr   Ú
ddgs.utilsr   Ú	getLoggerÚ__name__ÚloggerÚmcpÚtoolÚstrÚintr!   Údictr$   r/   r3   r:   r>   ÚbytesrE   © r   r   ú<module>r\      s‘  ðÙ ã Û Û 	Ý å *å Ý -à	ˆ×	Ñ	˜8Ó	$€ñ �Ó€ð ‡�ƒð Ø Ø ØØØñ#Øð#àð#ð ð#ð �T‰zð	#ð
 ð#ð ð#ð ð#ð 
ˆ$ˆs�Cˆx‰.Ñò#ó ð#ðL ‡�ƒð Ø Ø ØØØØØØ!ØØ $ñ2Øð2àð2ð ð2ð �T‰zð	2ð
 ð2ð ð2ð ð2ð �‰*ð2ð �‰:ð2ð �d‘
ð2ð �$‰Jð2ð ˜‘:ð2ð 
ˆ$ˆs�Cˆx‰.Ñò2ó ð2ðj ‡�ƒð Ø Ø ØØØñ#Øð#àð#ð ð#ð �T‰zð	#ð
 ð#ð ð#ð ð#ð 
ˆ$ˆs�Cˆx‰.Ñò#ó ð#ðL ‡�ƒð Ø Ø ØØØØ!ØØ!%ñ,Øð,àð,ð ð,ð �T‰zð	,ð
 ð,ð ð,ð ð,ð �d‘
ð,ð �D‰jð,ð ˜$‘Jð,ð 
ˆ$ˆs�Cˆx‰.Ñò,ó ð,ð^ ‡�ƒð ØØñ	Øðàðð ðð ð	ð
 
ˆ$ˆs�Cˆx‰.Ñòó ðð: ‡�ƒñ˜sð ¨ð À4ÈÈSÐSXÉ[ÐHXÑCYò ó ñr   