
    ii                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ ddl	m
Z
 	 dZd dlZn# e$ r	 d	Zd dlZY nw xY w ej        d
          ZddZddZddZd dZd!dZd"dZdS )#    )annotationsN)unescape)Any)unquote   )DuckDuckGoSearchExceptionTFz<.*?>objr   returnstrc                   	 t           r2t          j        | t          j                                                  nt          j        | dd          S # t          $ r,}t          t          |          j	         d|           |d }~ww xY w)N)optionF   )ensure_asciiindent: )

HAS_ORJSONorjsondumpsOPT_INDENT_2decodejson	Exceptionr   type__name__r	   exs     R/root/projects/butler/venv/lib/python3.11/site-packages/duckduckgo_search/utils.py
json_dumpsr      s    N ?FLV%8999@@BBBCeA>>>	

  N N N'488+<(D(D(D(DEE2MNs   AA 
B'BBstr | bytesc                    	 t           rt          j        |           nt          j        |           S # t          $ r,}t          t          |          j         d|           |d }~ww xY w)Nr   )r   r   loadsr   r   r   r   r   r   s     r   
json_loadsr"      st    N$.Cv|C   DJsOOC N N N'488+<(D(D(D(DEE2MNs   .1 
A''A""A'
html_bytesbyteskeywordsc                    dD ]b\  }}}	 |                      |          |z   }|                      ||          }| ||                                         c S # t          $ r Y _w xY wt          d|d          )zExtract vqd from html bytes.))s   vqd="      ")s   vqd=      &)s   vqd='r'      'z_extract_vqd() keywords=z Could not extract vqd.)indexr   
ValueErrorr   )r#   r%   c1c1_lenc2startends          r   _extract_vqdr3   &   s     
 
FB
	$$R((61E""2u--CeCi(//11111 	 	 	D	
#$Xh$X$X$X
Y
YYs   A	A
A#"A#raw_htmlc                Z    | r(t          t                              d|                     ndS )z)Strip HTML tags from the raw_html string. )r   REGEX_STRIP_TAGSsub)r4   s    r   
_normalizer9   6   s+    ;CK8$((X66777K    urlc                P    | r#t          |                               dd          ndS )z(Unquote URL and replace spaces with '+'. +r6   )r   replace)r;   s    r   _normalize_urlr@   ;   s(    -0873<<S)))b8r:   proxy
str | Nonec                    | dk    rdn| S )z.Expand "tb" to a full proxy URL if applicable.tbzsocks5://127.0.0.1:9150 )rA   s    r   _expand_proxy_tb_aliasrF   @   s    (-$$5@r:   )r	   r   r
   r   )r	   r   r
   r   )r#   r$   r%   r   r
   r   )r4   r   r
   r   )r;   r   r
   r   )rA   rB   r
   rB   )
__future__r   rehtmlr   typingr   urllib.parser   
exceptionsr   r   r   ImportErrorr   compiler7   r   r"   r3   r9   r@   rF   rE   r:   r   <module>rO      sV   " " " " " " 				                         1 1 1 1 1 1JMMMM   JKKKKK 2:g&& N N N NN N N NZ Z Z Z L L L L
9 9 9 9
A A A A A As   + 99