o
    E'hi  ã                   @  s¾   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
 zdZd dlZW n ey9   d	Zd dlZY nw e d
¡Zd#dd„Zd$dd„Zd%dd„Zd&dd„Zd'dd„Zd(d!d"„ZdS ))é    )ÚannotationsN)Úunescape)ÚAny)Úunquoteé   )ÚDuckDuckGoSearchExceptionTFz<.*?>Úobjr   ÚreturnÚstrc              
   C  s`   zt rtj| tjd� ¡ W S tj| ddd�W S  ty/ } ztt|ƒj	› d|› �ƒ|‚d }~ww )N)ÚoptionFé   )Úensure_asciiÚindentú: )
Ú
HAS_ORJSONÚorjsonÚdumpsZOPT_INDENT_2ÚdecodeÚjsonÚ	Exceptionr   ÚtypeÚ__name__©r   Úex© r   úMC:\Users\shubh\Videos\agent\nova\Lib\site-packages\duckduckgo_search/utils.pyÚ
json_dumps   s   ÿÿý€ÿr   ústr | bytesc              
   C  sP   zt r	t | ¡W S t | ¡W S  ty' } ztt|ƒj› d|› �ƒ|‚d }~ww )Nr   )r   r   Úloadsr   r   r   r   r   r   r   r   r   Ú
json_loads   s   €ÿr   Ú
html_bytesÚbytesÚkeywordsc              	   C  sb   dD ]&\}}}z|   |¡| }|   ||¡}| ||…  ¡ W   S  ty(   Y q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"   Úc1Zc1_lenÚc2ÚstartÚendr   r   r   Ú_extract_vqd&   s   ÿr.   Úraw_htmlc                 C  s   | r
t t d| ¡ƒS dS )z)Strip HTML tags from the raw_html string.Ú )r   ÚREGEX_STRIP_TAGSÚsub)r/   r   r   r   Ú
_normalize6   ó   r3   Úurlc                 C  s   | r
t | ƒ dd¡S dS )z(Unquote URL and replace spaces with '+'.ú ú+r0   )r   Úreplace)r5   r   r   r   Ú_normalize_url;   r4   r9   Úproxyú
str | Nonec                 C  s   | dkrdS | S )z.Expand "tb" to a full proxy URL if applicable.Útbzsocks5://127.0.0.1:9150r   )r:   r   r   r   Ú_expand_proxy_tb_alias@   s   r=   )r   r   r	   r
   )r   r   r	   r   )r    r!   r"   r
   r	   r
   )r/   r
   r	   r
   )r5   r
   r	   r
   )r:   r;   r	   r;   )Ú
__future__r   ÚreÚhtmlr   Útypingr   Úurllib.parser   Ú
exceptionsr   r   r   ÚImportErrorr   Úcompiler1   r   r   r.   r3   r9   r=   r   r   r   r   Ú<module>   s(    þ





