
    6j[                         d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ  e            Z ed          Z G d	 d
e
e                   ZdS )z(Duckduckgo search engine implementation.    )Mapping)AnyClassVarTypeVar)	UserAgent)BaseSearchEngine)HttpClient2)
TextResultTc                   (   e Zd ZU dZdZdZdZdZdZdZ	dd	d
dZ
eeeef                  ed<   dej        iZeeeef                  ed<   d!dddedz  dedz  deddfdZ	 d"dededededz  dededeeef         fdZdee         dee         fd ZdS )#
DuckduckgozDuckduckgo search engine.
duckduckgotextbingz!https://html.duckduckgo.com/html/POSTz//div[contains(@class, 'body')]z.//h2//text()z	./a/@hrefz./a//text())titlehrefbodyelements_xpathz
User-AgentheadersNT)verifyproxytimeoutr   returnc                N    t          | j        |||          | _        g | _        dS )z+Temporary, delete when HttpClient is fixed.)r   r   r   r   N)r	   r   http_clientresults)selfr   r   r   s       Y/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/duckduckgo.py__init__zDuckduckgo.__init__    s*    &t|5RYbhiii "       queryregion
safesearch	timelimitpagekwargsc                 J    |d|d}|dk    rd|dz
  dz  z    |d<   |r||d<   |S )	z'Build a payload for the search request. )qblr"   
         sdf )r   r#   r$   r%   r&   r'   r(   payloads           r   build_payloadzDuckduckgo.build_payload%   sK     BV44!88 D1H?24GCL 	&%GDMr!   r   c                     d |D             S )zPost-process search results.c                 F    g | ]}|j                             d           |S )zhttps://duckduckgo.com/y.js?)r   
startswith).0rs     r   
<listcomp>z3Duckduckgo.post_extract_results.<locals>.<listcomp>8   s.    \\\a!&*;*;<Z*[*[\\\\r!   r3   )r   r   s     r   post_extract_resultszDuckduckgo.post_extract_results6   s    \\7\\\\r!   )NN)r"   )__name__
__module____qualname____doc__namecategoryprovider
search_urlsearch_methoditems_xpathr   r   r   str__annotations__uarandomr   dictintboolr    r   r5   listr
   r<   r3   r!   r   r   r      sv        ##DHH4JM3K<KU`jw2x2xNHWS#X./xxx)5ry(AGXd38n%AAA#_c # # #cDj ##* #X\ #hl # # # #    	
 :   
c3h   "]D,< ]jAQ ] ] ] ] ] ]r!   r   N)r@   collections.abcr   typingr   r   r   fake_useragentr   	ddgs.baser   ddgs.http_client2r	   ddgs.resultsr
   rI   r   r   r3   r!   r   <module>rU      s    . . # # # # # # ) ) ) ) ) ) ) ) ) ) $ $ $ $ $ $ & & & & & & ) ) ) ) ) ) # # # # # #Y[[GCLL'] '] '] '] ']!*- '] '] '] '] ']r!   