+
    0j                     v    R t ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RI	H
t
 ^ RIHt  ! R R]]
,          4      tR# )	z-Duckduckgo news search engine implementation.N)Mapping)AnyClassVar)BaseSearchEngine)
NewsResult)_extract_vqdc                      a  ] tR t^t o RtRtRtRtRtRt	RRRRR	R
RRRRRR/t
V 3R lR ltRV 3R lR lltV 3R lR ltV 3R ltRtV tR# )DuckduckgoNewszDuckduckgo news search engine.
duckduckgonewsbingzhttps://duckduckgo.com/news.jsGETdatetitleexcerptbodyurlimagesourcec                &   < V ^8  d   QhRS[ RS[ /# )   queryreturn)str)format__classdict__s   "q/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/ddgs/engines/duckduckgo_news.py__annotate__DuckduckgoNews.__annotate__   s     1 1c 1c 1    c                l    V P                   P                  RRRV/R7      P                  p\        W!4      # )z2Get vqd value for a search query using DuckDuckGo.r   zhttps://duckduckgo.comq)params)http_clientrequestcontentr   )selfr   resp_contents   && r   _get_vqdDuckduckgoNews._get_vqd   s8    ''//7OY\^cXd/emmL00r   c                h   < V ^8  d   QhRS[ RS[ RS[ RS[ R,          RS[RS[ RS[S[ S[3,          /# )	r   r   region
safesearch	timelimitNpagekwargsr   )r   intdictr   )r   r   s   "r   r   r   $   s]        	
 :   
c3hr   c                    RRRRRR/pRVRR	R
RRVRV P                  V4      RWsP                  4       ,          /pV'       d   WHR&   V^8  d   V^,
          ^,           VR&   V# )z'Build a payload for the search request.on1moderatez-1offz-2lojsonnoampr!   vqdpdfs)r(   lower)	r&   r   r+   r,   r-   r.   r/   safesearch_basepayloads	   &&&&&&,  r   build_payloadDuckduckgoNews.build_payload$   s|      j$tDS4=='!1!1!34
 %DM!8#ax2o.GCLr   c                6   < V ^8  d   QhRS[ RS[S[,          /# )r   	html_textr   )r   listr   )r   r   s   "r   r   r   =   s        j1A r   c                ,   \         P                  ! V4      pVP                  R. 4      p. pV Fc  p\        4       pV P                  P                  4        F'  w  rxVP                  V4      p	VP                  W4       K)  	  VP                  V4       Ke  	  V# )z&Extract search results from lxml tree.results)r9   loadsgetr   elements_replaceitems__setattr__append)
r&   rE   	json_datarL   rH   itemresultkeyvaluedatas
   &&        r   extract_resultsDuckduckgoNews.extract_results=   s    JJy)	i,D\F"3399;
xx}""5/ < NN6"  r   c                L   < V ^8  d   Qh/ S[ S[S[S[3,          ,          ;R&   # )r   rK   )r   r   r   )r   r   s   "r   r   r      s"      wsCx01  r    N)   )__name__
__module____qualname____firstlineno____doc__namecategoryprovider
search_urlsearch_methodrK   r(   rB   rU   __annotate_func____static_attributes____classdictcell__)r   s   @r   r	   r	      so     (DHH1JM 	6u(51 1
 2 c  r   r	   )r^   r9   collections.abcr   typingr   r   	ddgs.baser   ddgs.resultsr   
ddgs.utilsr   r	   rX   r   r   <module>rl      s,    3  #   & # #<%j1 <r   