
    ^i
                         S r SSKrSSKJr  SSKJr  SSKJrJr  SSKJ	r	J
r
  SSKJr  SSKJr  S	\S
\S-  4S jr " S S\\   5      rg)z"Bing search engine implementation.    N)Mapping)time)AnyClassVar)parse_qsurlparse)BaseSearchEngine)
TextResultraw_urlreturnc                    [        U 5      n[        UR                  5      R                  S/ 5      nU(       d  gUS   n[	        U5      S::  a  gUSS nS[	        U5      * S-  -  n[
        R                  " XE-   5      nUR                  5       $ )z<Decode the Bing-wrapped raw_url to extract the original url.uNr      =   )r   r   querygetlenbase64urlsafe_b64decodedecode)r   parsedu_valsr   b64_partpaddingdecodeds          K/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/engines/bing.pyunwrap_bing_urlr      s    gFfll#''R0Fq	A
1v{ uHc(m^a'(G&&x'9:G>>    c                       \ rS rSr% SrSrSrSrSrSr	Sr
SS	S
S.r\\\\4      \S'    SS\S\S\S\S-  S\S\S\\\4   4S jjrS\\   S\\   4S jrSrg)Bing   zBing search engine.bingtextzhttps://www.bing.com/searchGETz //li[contains(@class, 'b_algo')]z.//h2/a//text()z.//h2/a/@hrefz.//p//text())titlehrefbodyelements_xpathr   region
safesearch	timelimitNpagekwargsr   c           	         UR                  5       R                  S5      u  pxXUS.n	SU SU SU SU 3SU SU SU SU 3S.n
U R                  R                  R	                  SU
5        U(       a<  [        [        5       S	-  5      nUS
:X  a  SUS-
   SU 3OSSSSS.U   -   nSU S3U	S'   US:  a  US-
  S-   U	S'   SUS:  a  US-
  OS 3U	S'   U	$ )z,Build a payload for the Bing search request.-)qpqcczm=z&u=zmkt=z&ui=)_EDGE_CD_EDGE_Szhttps://www.bing.comiQ yez5_im  _ez123)dwmzex1:""filters   
   firstPEREr    FORM)lowersplithttp_clientclientset_cookiesintr   )selfr   r*   r+   r,   r-   r.   countrylangpayloadcookiesr=   codes                r   build_payloadBing.build_payload0   s    ,,S1$7TF!G9CvQwi@dV1WIT$q	B
 	++,BGLDFeO$A+4+;T!c'!A3'cX[beHfgpHqAqD#(aGI!8#'!8r/!2GG $TAXr$BCGFOr   resultsc                    / nU H  nUR                   R                  S5      (       a  M%  UR                   R                  S5      (       a-  [        UR                   5      =(       d    UR                   Ul         UR                  U5        M     U$ )zPost-process search results.zhttps://www.bing.com/aclick?zhttps://www.bing.com/ck/a?)r'   
startswithr   append)rN   rV   post_resultsresults       r   post_extract_resultsBing.post_extract_resultsJ   so    F{{%%&DEE{{%%&BCC-fkk:Ifkk'  r    )rB   )__name__
__module____qualname____firstlineno____doc__namecategoryprovider
search_urlsearch_methoditems_xpathr)   r   r   str__annotations__rM   dictr   rT   listr
   r\   __static_attributes__r^   r   r   r!   r!      s    DHH.JM4K"3NHWS#X./    	
 :   
c3h4	D,< 	jAQ 	r   r!   )rc   r   collections.abcr   r   typingr   r   urllib.parser   r   	ddgs.baser	   ddgs.resultsr
   rj   r   r!   r^   r   r   <module>rt      sF    (  #    + & #S S4Z $4J' 4r   