Ë
    cQêjË
  ã                   ó’   — d Z ddlZddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ d	ed
edz  fd„Z G d„ dee   «      Zy)z"Bing search engine implementation.é    N)ÚMapping)Útime)ÚAnyÚClassVar)Úparse_qsÚurlparse)ÚBaseSearchEngine)Ú
TextResultÚraw_urlÚreturnc                 ó  — t        | «      }t        |j                  «      j                  dg «      }|sy|d   }t	        |«      dk  ry|dd }dt	        |«       dz  z  }t        j                  ||z   «      }|j                  «       S )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          úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/engines/bing.pyÚunwrap_bing_urlr      sˆ   € ä�gÓ€FÜ�f—l‘lÓ#×'Ñ'¨¨RÓ0€FÙØàˆq‰	€AÜ
ˆ1ƒv�‚{Øð ��ˆu€HØ”c˜(“m�^ aÑ'Ñ(€GÜ×&Ñ& x°'Ñ'9Ó:€GØ�>‰>ÓÐó    c                   ó¨   — e Zd ZU dZdZdZdZdZdZdZ	dZ
dd	d
dœZeeeef      ed<   	 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e   dee   fd„Zy)ÚBingzBing search engine.TÚ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           	      óœ  — |j                  «       j                  d«      \  }}|||dœ}	d|› d|› d|› d|› �d|› d|› d|› d|› �dœ}
| j                  j                  j	                  d|
«       |r;t        t        «       d	z  «      }|d
k(  rd|dz
  › d|› �ndddddœ|   z   }d|› d�|	d<   |dkD  r|dz
  dz  › |	d<   d|dkD  r|dz
  nd› �|	d<   |	S )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.comi€Q Ú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_payloadzBing.build_payload2   s  € ð Ÿ™›×,Ñ,¨SÓ1‰ˆ�Ø U°$Ñ7ˆà˜T˜F ! G 9¨C°¨v°Q°w°iÐ@Ø˜d˜V 1 W I¨T°$°°q¸¸	ÐBñ
ˆð 	×Ñ×Ñ×+Ñ+Ð,BÀGÔLÙÜ”D“F˜e‘OÓ$ˆAØ+4¸Ò+;�T˜!˜c™'˜ ! A 3Ñ'ÀÈcÐX[ÐbeÑHfÐgpÑHqÑAqˆDØ#(¨¨¨a ˆG�IÑØ�!Š8Ø#'¨!¡8¨r¡/Ð!2ˆG�GÑØ $°¸² T¨A¢X¸rÐ$BÐCˆG�F‰OØˆr   Úresultsc                 óø   — g }|D ]r  }|j                   j                  d«      rŒ|j                   j                  d«      r(t        |j                   «      xs |j                   |_         |j                  |«       Œt |S )zPost-process search results.zhttps://www.bing.com/aclick?zhttps://www.bing.com/ck/a?)r&   Ú
startswithr   Úappend)rM   rT   Úpost_resultsÚresults       r   Úpost_extract_resultszBing.post_extract_resultsL   sn   € àˆØò 	(ˆFØ�{‰{×%Ñ%Ð&DÔEØØ�{‰{×%Ñ%Ð&BÔCÜ-¨f¯k©kÓ:ÒI¸f¿k¹k�”Ø×Ñ Õ'ð	(ð Ðr   )rA   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚdisabledÚnameÚcategoryÚproviderÚ
search_urlÚsearch_methodÚitems_xpathr(   r   r   ÚstrÚ__annotations__rL   Údictr   rS   Úlistr
   rZ   © r   r   r!   r!      sÄ   … Ùà€Hà€DØ€HØ€Hà.€JØ€Mà4€Kà"ØØñ3€N�H˜W S¨# XÑ.Ñ/ó ð ñàðð ðð ð	ð
 ˜‘:ðð ðð ðð 
ˆc�3ˆh‰óð4	¨D°Ñ,<ð 	ÀÀjÑAQô 	r   r!   )r^   r   Úcollections.abcr   r   Útypingr   r   Úurllib.parser   r   Ú	ddgs.baser	   Úddgs.resultsr
   rf   r   r!   rj   r   r   ú<module>rp      sF   ðÙ (ã Ý #Ý ß  ß +å &Ý #ð˜Sð  S¨4¡Zó ô$6Ð˜JÑ'õ 6r   