
    6j                          d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ  e            ZdefdZ G d	 d
e	e                   ZdS )z$Google search engine implementation.    )Mapping)SystemRandom)AnyClassVar)BaseSearchEngine)
TextResultreturnc                  h   d} t                               |           \  }}}}t                               ||          }t                               dd          }t                               dd          }d| d| d| d| d	| d
}|t                              d                                          z   S )z7Return one random Android Google App User-Agent string.))z5.0zSM-G900P Build/LRX21T'   <   )z6.0zNexus 5 Build/MRA58Nr   r   )z8.0zPixel 2 Build/OPD3.170816.012r   r   i  i'  i  zMozilla/5.0 (Linux; Android z; z0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/z.0..z Mobile Safari/537.364e53544e5756)randomchoicerandintbytesfromhexdecode)	devicesandroid_verdevice
chrome_min
chrome_maxchrome_majorchrome_buildchrome_patchuas	            U/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/google.pyget_uar      s    G
 39--2H2H/KZ>>*j99L>>$--L>>$--L	V{ 	V 	Vf 	V 	V	V 	V#/	V 	V2>	V 	V 	V 
 n--446666    c                      e Zd ZU dZdZdZdZdZdZd e	            iZ
eeeef                  ed<   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 )GooglezGoogle search engine.googletextzhttps://www.google.com/searchGETz
User-Agentheaders_updatez//div[@data-hveid][.//h3]z.//h3//text()z.//a[.//h3]/@hrefz./div/div[last()]//text())titlehrefbodyelements_xpath   queryregion
safesearch	timelimitNpagekwargsr	   c                 |   | j         j                            dddi           dddd}|dz
  d	z  }|||                                         t	          |          d
}	|                    d          \  }
}| d|
                                 |	d<   d| |	d<   d|
                                 |	d<   |rd| |	d<   |	S )z.Build a payload for the Google search request.z
google.comCONSENTzYES+210)onmoderateoffr+   
   )qfilterstart-hllang_lrcountrycrzqdr:tbs)http_clientclientset_cookieslowerstrsplitupper)selfr,   r-   r.   r/   r0   r1   safesearch_baser=   payloadrB   langs               r   build_payloadzGoogle.build_payload3   s     	++L9f:MNNN!$#cBBR%j&6&6&8&89ZZ
 

 S))33'--//33&3'--//33 	0/I//GENr    resultsc                 0   g }|D ]}|j                             d          r>|j                             d          d                             d          d         |_         |j        r/|j                             d          r|                    |           |S )zPost-process search results.z/url?q=z?q=r+   &r   http)r(   
startswithrJ   r'   append)rL   rQ   post_resultsresults       r   post_extract_resultszGoogle.post_extract_resultsM   s     	, 	,F{%%i00 H$k//66q9??DDQG| , 6 6v > > ,##F+++r    )r+   )__name__
__module____qualname____doc__namecategoryprovider
search_urlsearch_methodr   r&   r   dictrI   __annotations__items_xpathr*   r   intr   rP   listr   rY    r    r   r"   r"   !   s0        DHH0JM0<ffhh/GNHT#s(^,GGG-K #+3 3NHWS#X./       	
 :   
c3h   4D,< jAQ      r    r"   N)r]   collections.abcr   r   r   typingr   r   	ddgs.baser   ddgs.resultsr   rI   r   r"   rh   r    r   <module>rm      s    * * # # # # # #                       & & & & & & # # # # # #	7 7 7 7 7(4 4 4 4 4j) 4 4 4 4 4r    