
    6j                     z    d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ  G d d	ee
                   ZdS )
z-Duckduckgo news search engine implementation.    N)Mapping)AnyClassVar)BaseSearchEngine)
NewsResult)_extract_vqdc                       e Zd ZU dZdZdZdZdZdZddd	d
dddZ	e
eeef                  ed<   dede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dee         fdZdS )DuckduckgoNewszDuckduckgo news search engine.
duckduckgonewsbingzhttps://duckduckgo.com/news.jsGETdatetitlebodyurlimagesource)r   r   excerptr   r   r   elements_replacequeryreturnc                 j    | j                             ddd|i          j        }t          ||          S )z2Get vqd value for a search query using DuckDuckGo.r   zhttps://duckduckgo.comq)params)http_clientrequestcontentr   )selfr   resp_contents      ^/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/duckduckgo_news.py_get_vqdzDuckduckgoNews._get_vqd   s:    '//7OY\^cXd/eemL%000       region
safesearch	timelimitNpagekwargsc                     dddd}|dd||                      |          ||                                         d}|r||d<   |dk    r|dz
  d	z   |d
<   |S )z'Build a payload for the search request.1z-1z-2)onmoderateoffjson)lonoampr   vqdpdfr$      s)r"   lower)	r   r   r%   r&   r'   r(   r)   safesearch_basepayloads	            r!   build_payloadzDuckduckgoNews.build_payload$   s     "%$tDD=='' !1!1!3!34
 
  	&%GDM!88#ax2o/GCLr#   	html_textc                 B   t          j        |          }|                    dg           }g }|D ]o}t                      }| j                                        D ]0\  }}|                    |          }	|                    ||	           1|                    |           p|S )z&Extract search results from lxml tree.results)r/   loadsgetr   r   items__setattr__append)
r   r<   	json_datarA   r>   itemresultkeyvaluedatas
             r!   extract_resultszDuckduckgoNews.extract_results=   s    Jy))	i,, 	# 	#D\\F"399;; 0 0
Uxx}}""5$////NN6""""r#   )r$   )__name__
__module____qualname____doc__namecategoryprovider
search_urlsearch_methodr   r   r   str__annotations__r"   intdictr   r;   listr   rJ    r#   r!   r
   r
      s,        ((DHH1JM 5 5hwsCx01   1c 1c 1 1 1 1    	
 :   
c3h   2 j1A      r#   r
   )rN   r/   collections.abcr   typingr   r   	ddgs.baser   ddgs.resultsr   
ddgs.utilsr   r
   rY   r#   r!   <module>r_      s    3 3  # # # # # #                 & & & & & & # # # # # # # # # # # #< < < < <%j1 < < < < <r#   