Ë
    cQêjm  ã                   ó~   — 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y)z$Google search engine implementation.é    )ÚMapping)ÚSystemRandom)ÚAnyÚClassVar)ÚBaseSearchEngine)Ú
TextResultÚreturnc                  ó¢   — t         j                  d«      } d| › d�}t         j                  d«      rt         j                  d«      }|d|› d�z  }|S )zReturn one User-Agent string.)z2.0617.1.0.3z2.0625.2.0.2z2.0635.2.0.2z5.0706.4.0.1z5.0819.4.0.1z	NokiaN72/z5 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1)TF)z	7.9.1.120z	7.9.1.121z	7.9.1.122z/UC Browserz/27/351/UCWEB)ÚrandomÚchoice)ÚfirmwareÚuaÚ
uc_versions      úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/engines/google.pyÚget_uar      sS   € ä�}‰}ÐmÓn€HØ�X�JÐSÐ	T€BÜ‡}�}�]Ô#Ü—]‘]Ð#JÓKˆ
Ø
�˜J˜< }Ð5Ñ5ˆØ€Ió    c                   óä   — e Zd ZU dZ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defd„Zdee   dee   fd„Zy)ÚGooglezGoogle search engine.TÚgoogleÚtextz!https://www.google.com/wml/searchÚGETz
User-AgentÚheaders_updatez%//div[./div[1]/a and ./div[2][table]]z./div[a]/a/span[1]/text()z./div[a]/a/@hrefz./div[2][table]//text())ÚtitleÚhrefÚbodyÚelements_xpathÚqueryÚregionÚ
safesearchÚ	timelimitNÚpageÚkwargsr	   c                 ó\  — | j                   j                  j                  dddi«       ddddœ}|dz
  d	z  }|d||j                  «          t	        |«      d
œ}	|j                  d«      \  }
}|› d|
j                  «       › �|	d<   d|› �|	d<   d|
j                  «       › �|	d<   |rd|› �|	d<   |	S )z.Build a payload for the Google search request.z
google.comÚCONSENTzYES+Ú2Ú1Ú0)ÚonÚmoderateÚoffé   é
   )ÚqÚsca_esvÚfilterÚstartú-ÚhlÚlang_ÚlrÚcountryÚcrzqdr:Útbs)Úhttp_clientÚclientÚset_cookiesÚlowerÚstrÚsplitÚupper)Úselfr   r   r   r    r!   r"   Úsafesearch_baser0   Úpayloadr5   Úlangs               r   Úbuild_payloadzGoogle.build_payload+   sÐ   € ð 	×Ñ×Ñ×+Ñ+¨L¸9ÀfÐ:MÔNØ!$°#¸cÑBˆØ˜‘˜R‘ˆàØØ% j×&6Ñ&6Ó&8Ñ9Ü˜“Zñ	
ˆð Ÿ™ SÓ)‰ˆ�Ø˜&  '§-¡-£/Ð!2Ð3ˆ�‰Ø ˜v˜ˆ�‰Ø! '§-¡-£/Ð!2Ð3ˆ�‰ÙØ# I ;Ð/ˆG�E‰NØˆr   Ú	html_textc                 ó*   — ||j                  d«      d S )z0Pre-process html_text before extracting results.z?>N)Úfind)r?   rD   s     r   Úpre_process_htmlzGoogle.pre_process_htmlF   s   € à˜Ÿ™¨Ó-Ð/Ð0Ð0r   Úresultsc                 óP  — g }|D ]ž  }|j                   j                  d«      rG|j                   j                  d«      d   j                  d«      d   j                  d«      d   |_         |j                  sŒr|j                   j                  d«      sŒŽ|j	                  |«       Œ  |S )zPost-process search results.z/url?q=z?q=r+   ú&r   ú?Úhttp)r   Ú
startswithr=   r   Úappend)r?   rH   Úpost_resultsÚresults       r   Úpost_extract_resultszGoogle.post_extract_resultsJ   s’   € àˆØò 	,ˆFØ�{‰{×%Ñ% iÔ0Ø$Ÿk™k×/Ñ/°Ó6°qÑ9×?Ñ?ÀÓDÀQÑG×MÑMÈcÓRÐSTÑU�”Ø�|‹| §¡× 6Ñ 6°vÕ >Ø×#Ñ# FÕ+ð		,ð
 Ðr   )r+   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚdisabledÚnameÚcategoryÚproviderÚ
search_urlÚsearch_methodr   r   r   Údictr<   Ú__annotations__Úitems_xpathr   r   Úintr   rC   rG   Úlistr   rQ   © r   r   r   r      sõ   … Ùà€Hà€DØ€HØ€Hà4€JØ€MØ0<¹f»hÐ/G€N�H˜T # s (™^Ñ,ÓGà9€Kà,Ø"Ø)ñ3€N�H˜W S¨# XÑ.Ñ/ó ð ñàðð ðð ð	ð
 ˜‘:ðð ðð ðð 
ˆc�3ˆh‰óð61¨#ð 1°#ó 1ð¨D°Ñ,<ð ÀÀjÑAQô r   r   N)rU   Úcollections.abcr   r   r   Útypingr   r   Ú	ddgs.baser   Úddgs.resultsr   r<   r   r   ra   r   r   ú<module>rf      s<   ðÙ *å #Ý ß  å &Ý #á	‹€ð�ó ô;Ð˜jÑ)õ ;r   