
    iL              	       *   U d Z g dZddlmZ ddlmZ ddlmZ eeef   e	d<    ej                  d      Zd Zd	ed
ededez  dez  f   fdZd	ed
ededez  dez  f   fdZd	ed
ededez  dez  f   fdZd	ed
ededez  dez  f   fdZeeeedZy)a  Implementations of the favicon *resolvers* that are available in the favicon
proxy by default.  A *resolver* is a function that obtains the favicon from an
external source.  The *resolver* function receives two arguments (``domain,
timeout``) and returns a tuple ``(data, mime)``.

)DEFAULT_RESOLVER_MAPallesedv
duckduckgogoogleyandex    )Callable)network)loggerr   zfavicons.resolversc                  0    ddi}|j                  |        |S )Nraise_for_httperrorF)update)kwargsds     )/root/searxng/searx/favicons/resolvers.py	_req_argsr      s    	&AHHVH    domaintimeoutreturnNc                     d\  }}d|  }t        j                  d|       t        j                  |fi t	        |      }|r/|j
                  dk(  r |j                  d   }|dk7  r|j                  }||fS )zBFavicon Resolver from allesedv.com / https://favicon.allesedv.com/NNzhttps://f1.allesedv.com/32/fetch favicon from: %sr      Content-Typez	image/gifr
   debugr	   getr   status_codeheaderscontentr   r   datamimeurlresponses         r   r   r      s}    JD$'x
0C
LL)3/ {{3=)G"<=HH((C//;##D:r   c                     d\  }}d|  d}t        j                  d|       t        j                  |fi t	        |      }|r*|j
                  dk(  r|j                  d   }|j                  }||fS )zlFavicon Resolver from duckduckgo.com / https://blog.jim-nielsen.com/2021/displaying-favicons-for-any-domain/r   z!https://icons.duckduckgo.com/ip2/z.icor   r   r   r   r   r"   s         r   r   r   +   sw    JD$-fXT
:C
LL)3/ {{3=)G"<=HH((C//:r   c                     d\  }}d|  d}t        j                  d|       t        j                  |fi t	        |      }|r*|j
                  dk(  r|j                  d   }|j                  }||fS )z Favicon Resolver from google.comr   zdhttps://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://z&size=32r   r   r   r   r   r"   s         r   r   r   :   s    JD$
xx	)  LL)3/ {{3=)G"<=HH((C//:r   c                    d\  }}d|  }t        j                  d|       t        j                  |fi t	        |      }|rB|j
                  dk(  r3t        |j                        dkD  r|j                  d   }|j                  }||fS )z Favicon Resolver from yandex.comr   z#https://favicon.yandex.net/favicon/r   r   r   F   r   )	r
   r   r	   r   r   r   lenr!   r    r"   s         r   r   r   O   s    JD$/x
8C
LL)3/ {{3=)G"<=HH((C/C8H8H4IB4N/:r   )r   r   r   r   )__doc____all__typingr   searxr	   r
   dictstr__annotations__getChildr   inttuplebytesr   r   r   r   r    r   r   <module>r8      s   Q   3=) )	-	.S 3 5tcz1I+J  s S U4%<3K-L 3  te|TCZ/G)H *3  te|TCZ/G)H   	 r   