
    6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dS )z"Bing search engine implementation.    N)Mapping)time)AnyClassVar)parse_qsurlparse)BaseSearchEngine)
TextResultraw_urlreturnc                 H   t          |           }t          |j                                      dg           }|sdS |d         }t	          |          dk    rdS |dd         }dt	          |           dz  z  }t          j        ||z             }|                                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          S/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/bing.pyunwrap_bing_urlr      s    gFfl##''R00F tq	A
1vv{{t uHc(mm^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dS )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_xpath   r   region
safesearch	timelimitNpagekwargsr   c           	         |                                                     d          \  }}|||d}	d| d| d| d| d| d| d| d| d}
| j        j                            d|
           |rGt          t                      d	z            }|d
k    rd|dz
   d| nddddd|         z   }d| d|	d<   |dk    r|dz
  dz   |	d<   d|dk    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.comiQ yez5_im  _ez123)dwmzex1:""filtersr)   
   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   sV    ,,S11U$77@T@@G@@@@w@@BdBBWBB$BBBB
 
 	++,BGLLL 	1DFFeO$$A+4+;+;'!c'''A'''cX[beHfHfgpHqAqD!0GI!88#'!8r/3GGCTAXXrCCGFOr   resultsc                     g }|D ]l}|j                             d          r|j                             d          r t          |j                   p|j         |_         |                    |           m|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   s     	( 	(F{%%&DEE {%%&BCC J-fk::Ifk''''r   )r)   )__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4K"3 3NHWS#X./       	
 :   
c3h   4	D,< 	jAQ 	 	 	 	 	 	r   r!   )r^   r   collections.abcr   r   typingr   r   urllib.parser   r   	ddgs.baser	   ddgs.resultsr
   rf   r   r!   rj   r   r   <module>rp      s    ( (  # # # # # #                       + + + + + + + + & & & & & & # # # # # #S S4Z    $6 6 6 6 6J' 6 6 6 6 6r   