
    ^i                     l    S r SSKrSSKJr  SSKJrJr  SSKJr  SSK	J
r
  SSKJr   " S S	\\
   5      rg)
z-Duckduckgo news search engine implementation.    N)Mapping)AnyClassVar)BaseSearchEngine)
NewsResult)_extract_vqdc                       \ rS rSr% SrSrSrSrSrSr	SS	S
SSSS.r
\\\\4      \S'   S\S\4S jr SS\S\S\S\S-  S\S\S\\\4   4S jjrS\S\\   4S jrSrg)DuckduckgoNews   z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                 f    U R                   R                  SSSU0S9R                  n[        X!5      $ )z2Get vqd value for a search query using DuckDuckGo.r   zhttps://duckduckgo.comq)params)http_clientrequestcontentr   )selfr   resp_contents      V/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/engines/duckduckgo_news.py_get_vqdDuckduckgoNews._get_vqd   s8    ''//7OY\^cXd/emmL00    region
safesearch	timelimitNpagekwargsc                     SSSS.nUSSUU R                  U5      XsR                  5          S.nU(       a  XHS'   US:  a  US-
  S	-   US
'   U$ )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_payloadDuckduckgoNews.build_payload$   sj     "%$tD==' !1!1!34
 %DM!8#ax2o.GCLr%   	html_textc                 ,   [         R                  " U5      nUR                  S/ 5      n/ nU Hc  n[        5       nU R                  R                  5        H'  u  pxUR                  U5      n	UR                  X5        M)     UR                  U5        Me     U$ )z&Extract search results from lxml tree.results)r0   loadsgetr   r   items__setattr__append)
r    r?   	json_datarD   rA   itemresultkeyvaluedatas
             r"   extract_resultsDuckduckgoNews.extract_results=   s    JJy)	i,D\F"3399;
xx}""5/ < NN6"  r%    )r7   )__name__
__module____qualname____firstlineno____doc__namecategoryprovider
search_urlsearch_methodr   r   r   str__annotations__r#   intdictr   r=   listr   rM   __static_attributes__rO   r%   r"   r
   r
      s    (DHH1JM 5hwsCx01 1c 1c 1   	
 :   
c3h2 j1A r%   r
   )rT   r0   collections.abcr   typingr   r   	ddgs.baser   ddgs.resultsr   
ddgs.utilsr   r
   rO   r%   r"   <module>re      s,    3  #   & # #<%j1 <r%   