Ë
    cQêjÁ  ã                   óâ   — d Z ddl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
 ddlmZ  ej                  d	«      Zd
ededefd„Zdedefd„Zdedefd„Zdeez  defd„Zdedz  dedz  fd„Zy)z
Utilities.é    N)Úsuppress)ÚdatetimeÚtimezone)Úunescape)Úunquoteé   )ÚDDGSExceptionz<.*?>Ú
html_bytesÚqueryÚreturnc                 óø   — dD ]Y  \  }}}t        t        «      5  | j                  |«      |z   }| j                  ||«      }| || j                  «       cddd«       c S  d|›d�}t	        |«      ‚# 1 sw Y   ŒvxY w)zExtract vqd from html bytes.))s   vqd="é   ó   ")s   vqd=é   ó   &)s   vqd='r   ó   'Nz_extract_vqd() query=z Could not extract vqd.)r   Ú
ValueErrorÚindexÚdecoder	   )r
   r   Úc1Úc1_lenÚc2ÚstartÚendÚmsgs           úO/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/utils.pyÚ_extract_vqdr      s“   € ðò 2‰ˆˆF�Bô
 ”jÓ!ñ 	2Ø×$Ñ$ RÓ(¨6Ñ1ˆEØ×"Ñ" 2 uÓ-ˆCØ˜e CÐ(×/Ñ/Ó1÷	2ó 	2ð2ð #˜E˜8Ð#:Ð
;€CÜ
˜Ó
Ð÷	2ð 	2ús   ™9A0Á0A9	Úurlc                 ó@   — | rt        | «      j                  dd«      S dS )z(Unquote URL and replace spaces with '+'.ú ú+Ú )r   Úreplace)r   s    r   Ú_normalize_urlr$      s    € á-0Œ7�3‹<×Ñ  SÓ)Ð8°bÐ8ó    Úrawc                 ó`  — | syt         j                  d| «      }t        |«      }t        j                  d|«      }t        |«      D �ci c]*  }t        j                  |«      d   dk(  sŒt        |«      d“Œ, }}|r|j                  |«      }dj                  |j                  «       «      S c c}w )z’Normalize text.

    Strip HTML tags, unescape HTML entities, normalize Unicode,
    remove "c" category characters, and collapse whitespace.
    r"   ÚNFCr   ÚCNr    )Ú_REGEX_STRIP_TAGSÚsubr   ÚunicodedataÚ	normalizeÚsetÚcategoryÚordÚ	translateÚjoinÚsplit)r&   ÚtextÚchÚ	c_to_nones       r   Ú_normalize_textr7   $   s¤   € ñ Øô × Ñ   SÓ)€Dô �D‹>€Dô × Ñ  ¨Ó-€Dô *-¨T«ÖY 2´k×6JÑ6JÈ2Ó6NÈqÑ6QÐUXÓ6X”�R“˜$‘ÐY€IÐYÙØ�~‰~˜iÓ(ˆð �8‰8�D—J‘J“LÓ!Ð!ùò Zs   Á B+Á)B+Údatec                 óŠ   — t        | t        «      r2t        j                  | t        j
                  «      j                  «       S | S )z8Normalize date from integer to ISO format if applicable.)Ú
isinstanceÚintr   Úfromtimestampr   ÚutcÚ	isoformat)r8   s    r   Ú_normalize_dater?   ?   s3   € äEOÐPTÔVYÔEZŒ8×!Ñ! $¬¯©Ó5×?Ñ?ÓAÐdÐ`dÐdr%   Úproxyc                 ó   — | dk(  rdS | S )z.Expand "tb" to a full proxy URL if applicable.Útbzsocks5h://127.0.0.1:9150© )r@   s    r   Ú_expand_proxy_tb_aliasrD   D   s   € à).°$ªÐ%ÐA¸EÐAr%   )Ú__doc__Úrer,   Ú
contextlibr   r   r   Úhtmlr   Úurllib.parser   Ú
exceptionsr	   Úcompiler*   ÚbytesÚstrr   r$   r7   r;   r?   rD   rC   r%   r   ú<module>rN      s¦   ðÙ ã 	Û Ý ß 'Ý Ý  å %à�B—J‘J˜wÓ'Ð ð˜Uð ¨3ð °3ó ð 9˜ð 9 ó 9ð
"˜ð " ó "ð6e˜# ™)ð e¨ó eð
B #¨¡*ð B°°t±ô Br%   