
    iT                        U d 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dlmZ ddlmZ ej                   rdd	lmZ d
ddddddZdgZdZdZdddddZdZdZdZe
ed<   	 deeej<                  f   defdZ dedefdZ!d  Z"d! Z#y)"z#360Search search engine for searxng    N)	urlencode)html)logger)EngineCache)extract_text)get)SXNG_Responsezhttps://www.so.com/	Q10846064FHTMLzh)websitewikidata_iduse_official_apirequire_api_keyresultslanguagegeneralTdwmy)dayweekmonthyearzhttps://www.so.comcookiei  CACHEengine_settingsreturnc                 &    t        d| d   z         ay)zaInitialization of the engine.

    - Instantiate a cache for this engine (:py:obj:`CACHE`).

    cachenameT)r   r   )r   s    (/root/searxng/searx/engines/360search.pysetupr$   ,   s     /&"99:E    urlc                     t         j                  t              }|r|S t        | dd      }|j                  }|d   j                  d      d   }t         j                  t        |t               |S )N
   F)timeoutallow_redirectsz
set-cookie;r   )keyvalueexpire)r   r   COOKIE_CACHE_KEYhttp_getheaderssplitsetCOOKIE_CACHE_EXPIRATION_SECONDS)r&   r   respr1   s       r#   
get_cookier6   8   sc    #34F"3EJDllG\"((-a0F	II"&9XIYMr%   c                 2   |d   | d}t         j                  |d         rt         j                  |d         |d<   t         dt        |       |d<   t	        j
                  d|d          t        |d         }t	        j
                  d|       d	|i|d
<   |S )Npageno)pnq
time_rangeadv_tz/s?r&   zquerying url: %szobtained cookie: %sCookier1   )time_range_dictr   base_urlr   r   debugr6   )queryparamsquery_paramsr   s       r#   requestrD   D   s    XL
 6,/0 / 3 3F<4H IWjIl$;#<=F5M
LL#VE]3u&F
LL&/!6*F9Mr%   c                    t        j                  | j                        }g }|j                  d      D ]  }t	        |j                  d            }t	        |j                  d            }|st	        |j                  d            }t	        |j                  d            }|st	        |j                  d            }|s|s|j                  |||d        |S )Nz"//li[contains(@class, "res-list")]z&.//h3[contains(@class, "res-title")]/az2.//h3[contains(@class, "res-title")]/a/@data-mdurlz,.//h3[contains(@class, "res-title")]/a/@hrefz.//p[@class="res-desc"]z".//span[@class="res-list-summary"])titler&   content)r   
fromstringtextxpathr   append)r5   domr   itemrF   r&   rG   s          r#   responserN   V   s    
//$))
$CG		>? TZZ(PQR4::&Z[\tzz*XYZCtzz*CDE"4::.R#STGSNN"&( Nr%   )$__doc__typingturllib.parser   lxmlr   searxr   searx.enginelibr   searx.utilsr   searx.networkr   r0   TYPE_CHECKINGsearx.extended_typesr	   about
categoriespagingtime_range_supportr>   r?   r/   r4   __annotations__dictstrAnyboolr$   r6   rD   rN    r%   r#   <module>rd      s    *  "   ' $ )??2 %	 [
	 sS#F   "&   O	4QUU
+ 	 		C 	C 	$r%   