Ë
    cQêj‰  ã                   ól   — 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y)
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y)Ú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                 ón   — | 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      úa/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/engines/duckduckgo_news.pyÚ_get_vqdzDuckduckgoNews._get_vqd   s:   € à×'Ñ'×/Ñ/°Ð7OÐY\Ð^cÐXdÐ/Óe×mÑmˆÜ˜L¨%Ó0Ð0ó    ÚregionÚ
safesearchÚ	timelimitNÚpageÚkwargsc                 ó”   — ddddœ}|dd|| j                  |«      ||j                  «          dœ}|r||d<   |dkD  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Údfé   é   Ús)r"   Úlower)	r   r   r$   r%   r&   r'   r(   Úsafesearch_baseÚpayloads	            r!   Úbuild_payloadzDuckduckgoNews.build_payload$   sn   € ð "%°$¸tÑDˆàØØØØ—=‘= Ó'Ø  ×!1Ñ!1Ó!3Ñ4ñ
ˆñ Ø%ˆG�D‰MØ�!Š8Ø# a™x¨2™oÐ.ˆG�C‰LØˆr#   Ú	html_textc                 ó&  — t        j                  |«      }|j                  dg «      }g }|D ]b  }t        «       }| j                  j                  «       D ](  \  }}|j                  |«      }	|j                  ||	«       Œ* |j                  |«       Œd |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�   € ä—J‘J˜yÓ)ˆ	Ø—‘˜i¨Ó,ˆØˆØò 	#ˆDÜ“\ˆFØ"×3Ñ3×9Ñ9Ó;ò 0‘
��UØ—x‘x “}�Ø×"Ñ" 5¨$Õ/ð0ð �N‰N˜6Õ"ð	#ð ˆr#   )r5   )Ú__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à1€JØ€Mð ØØØØØñ5Ð�h˜w s¨C xÑ0Ñ1ó ð1˜cð 1 có 1ð ñàðð ðð ð	ð
 ˜‘:ðð ðð ðð 
ˆc�3ˆh‰óð2¨ð °°jÑ1Aô r#   r
   )rN   r.   Úcollections.abcr   Útypingr   r   Ú	ddgs.baser   Úddgs.resultsr   Ú
ddgs.utilsr   r
   rY   r#   r!   ú<module>r_      s,   ðÙ 3ã Ý #ß  å &Ý #Ý #ô<Ð% jÑ1õ <r#   