Ë
    cQêj8	  ã                   ó„   — d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
  ej                  e«      Z G d„ dee
   «      Zy)	z'Startpage search engine implementation.é    N)ÚMapping)ÚAnyÚClassVar)ÚBaseSearchEngine)Ú
TextResultc                   óÒ   — e Zd ZU dZdZdZdZdZdZddiZ	e
eeef      ed	<   d
ZddddœZe
eeef      ed<   defd„Z	 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)Ú	StartpagezStartpage search engine.Ú	startpageÚtextÚgooglez#https://www.startpage.com/sp/searchÚPOSTÚRefererúhttps://www.startpage.com/Úheaders_updatez*//div[contains(@class, 'result css')][./a]z.//h2//text()z	./a/@hrefz.//p//text())ÚtitleÚhrefÚbodyÚelements_xpathÚreturnc                 óÆ   — | j                   j                  dd«      j                  }| j                  |«      }|j	                  d«      }|r|d   nd| _        | j
                  S )zGet sc param.ÚGETr   z.//form[@id="search"]//input[@name="sc"]/@valuer   Ú )Úhttp_clientÚrequestr   Úextract_treeÚxpathÚ_sc)ÚselfÚ	resp_textÚtreeÚsc_elementss       ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/engines/startpage.pyÚget_sczStartpage.get_sc   sX   € à×$Ñ$×,Ñ,¨UÐ4PÓQ×VÑVˆ	Ø× Ñ  Ó+ˆØ—j‘jÐ!QÓRˆÙ%0�;˜q’>°bˆŒØ�x‰xˆó    ÚqueryÚregionÚ
safesearchÚ	timelimitNÚpageÚkwargsc                 ó  — |j                  «       j                  d«      \  }}ddddœ}	|dd| j                  «       ddd	d
d
|› d|j                  «       › �|	|j                  «          ddœ}
|dkD  rt	        |«      |
d<   |r||
d<   |
S )z1Build a payload for the Startpage search request.ú-ÚheavyÚmoderateÚnone)Úonr.   ÚoffÚwebÚdeviceÚenglishÚ1Ú0Ú_Úorganic)r%   ÚcatÚtÚscÚluiÚlanguageÚabpÚabdÚabeÚqsrÚqadfÚsegmenté   r)   Ú	with_date)ÚlowerÚsplitr#   ÚupperÚstr)r   r%   r&   r'   r(   r)   r*   ÚcountryÚlangÚsafesearch_baseÚpayloads              r"   Úbuild_payloadzStartpage.build_payload'   s£   € ð Ÿ™›×,Ñ,¨SÓ1‰ˆ�Ø!(°jÈÑPˆàØØØ—+‘+“-ØØ!ØØØØ�V˜1˜WŸ]™]›_Ð-Ð.Ø# J×$4Ñ$4Ó$6Ñ7Ø ñ#
ˆð �!Š8Ü! $›iˆG�F‰OÙØ#,ˆG�KÑ àˆr$   Úresultsc                 ód   — |D �cg c]   }|j                   j                  d«      rŒ|‘Œ" c}S c c}w )zPost-process search results.zhttps://www.google.com)r   Ú
startswith)r   rO   Úrs      r"   Úpost_extract_resultszStartpage.post_extract_resultsH   s(   € à"ÖV�a¨!¯&©&×*;Ñ*;Ð<TÕ*U’ÒVÐVùÒVs   … -¦-)rD   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚcategoryÚproviderÚ
search_urlÚsearch_methodr   r   ÚdictrI   Ú__annotations__Úitems_xpathr   r   r#   Úintr   rN   Úlistr   rS   © r$   r"   r	   r	      sì   … Ù"à€DØ€HØ€Hà6€JØ€MØ09Ð;WÐ/X€N�H˜T # s (™^Ñ,ÓXà>€Kà ØØñ3€N�H˜W S¨# XÑ.Ñ/ó ð˜ó ð ñàðð ðð ð	ð
 ˜‘:ðð ðð ðð 
ˆc�3ˆh‰óðBW¨D°Ñ,<ð WÀÀjÑAQô Wr$   r	   )rW   ÚloggingÚcollections.abcr   Útypingr   r   Ú	ddgs.baser   Úddgs.resultsr   Ú	getLoggerrT   Úloggerr	   rb   r$   r"   ú<module>rj      s=   ðÙ -ã Ý #ß  å &Ý #à	ˆ×	Ñ	˜8Ó	$€ô=WÐ  Ñ,õ =Wr$   