
    i                     
   d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
 dddddd	d
ZddgZdZdZddddZddddZi ddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d+d-d.d/d0d1d2d3d4d5d6d7d8d9Z	 dd)d:d:d:d:d:d:d:d:d:d:d:d:d:d;Z	 i d<d=d>d>d?d?d@d@dAdAdBdBdCdCdDdDdEdEdFdFdGdGdHdHdIdIdJdJdKdKdLdLdMdMi dNdNdOdOdPdPdQdQdRdRdSdSdTdTdUdUdVdVdWdWdXdXdYdYdZdZd[d[d\d]d^d]d_d]d`d`d`daZdb Zdc Zdd Zde Zy)fzYahoo Search (Web)

Languages are supported by mapping the language to a domain.  If domain is not
found in :py:obj:`lang2domain` URL ``<lang>.search.yahoo.com`` is used.

    )unquote	urlencode)html)eval_xpath_getindexeval_xpath_listextract_texthtml_to_textzhttps://search.yahoo.com/Nz https://developer.yahoo.com/api/FHTML)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsgeneralwebTdwm)dayweekmonthpir)r         COzco.search.yahoo.comTHzth.search.yahoo.comVEzve.search.yahoo.comCLzcl.search.yahoo.comHKzhk.search.yahoo.comPEzpe.search.yahoo.comCAzca.search.yahoo.comDEzde.search.yahoo.comFRzfr.search.yahoo.comTWztw.search.yahoo.comGBzuk.search.yahoo.comUKBRzbr.search.yahoo.comINzin.search.yahoo.comESzespanol.search.yahoo.comPHzph.search.yahoo.comARzar.search.yahoo.comzmx.search.yahoo.comzsg.search.yahoo.com)MXSGsearch.yahoo.com)zh_chszh_chtanyenbgcsdaelethehrjakoskslallr4   arr6   r7   r8   der9   r5   esr:   fifrr;   r<   huitr=   r>   ltlvnlnoplptrorur?   r@   svthtrzhr2   zh_Hanszzh-CNr3   )zh_Hantzzh-HKzzh-TWc                     g }| j                         D ]  \  }}|j                  | d|         dj                  |      S )aq  Build sB cookie parameter from provided parameters.

    :param cookie_params: Dictionary of cookie parameters
    :type cookie_params: dict
    :returns: Formatted cookie string
    :rtype: str

    Example:
        >>> cookie_params = {'v': '1', 'vm': 'p', 'fl': '1', 'vl': 'lang_fr'}
        >>> build_sb_cookie(cookie_params)
        'v=1&vm=p&fl=1&vl=lang_fr'
    =&)itemsappendjoin)cookie_paramscookie_partskeyvalues       $/root/searxng/searx/engines/yahoo.pybuild_sb_cookierb   {   sO     L#))+ .
Use1UG,-. 88L!!    c                 `   |d   j                  d      dgz   dd \  }}t        j                  |d      }d| i}t        j                  |d         }|r||d<   |d	   d
k(  rd|d<   n%|d	   dk\  r|d	   dz  d
z   |d<   d|d<   d|d<   d|d<   d
t        |d      d
d| ddd
d}t        |      |d   d<   t        j                  |      }|st        j                  || d      }t        j                  d|        t        j                  d|d           d| dt        |       |d<   ||d <   y)!zBuild Yahoo search request.language-Nr   r4   r   
time_rangebtfpagenor    iscqry   bpzr   bctxargs
safesearchlang_
   new)vvmflvlpnrwusersetcookiessBz.search.yahoo.comzdomain selected: z	cookies: zhttps://z/search?urldomain)splityahoo_languagesgettime_range_dictsafesearch_dictrb   region2domainlang2domainloggerdebugr   )queryparamslangregion
url_paramsrh   sbcookie_paramsr   s           ra   requestr      s    :&,,S1TF:BQ?LD&tU+D uJ


f\2
3C

5h1!
8		Q	 *Q.2
3
4
5
7 f\23dVnO .o>F9d v&F$/@'AB
LL$VH-.
LL9VI./01vhhy/D.EFF5MF8rc   c                    ddg}g }| j                  d| j                  d      dz         }|D ]*  }| j                  |      }|dkD  s|j                  |       , |dk(  st        |      dk(  r| S t	        |      }t        | ||       S )z"remove yahoo-specific tracking-urlz/RSz/RKhttpz/RU=r   r   )findrfindr[   lenminr   )
url_stringendingsendpositionsstartendingendposends          ra   	parse_urlr      s     enGLOOFJOOF$;a$?@E (!!&)B;'(
 zS&!+
l
C:eC())rc   c           
         g }t        j                  | j                        }d}d}| j                  d   }|dk(  rd}d}t	        |d      D ]  }t        ||dd	
      }|t        |      }t        ||dd
      }t        |      }t        |ddd
      }	t        |	d      }	|j                  |dj                  t        |      j                         j                               dj                  t        |	      j                         j                               d        t	        |d      D ]  }
|j                  dt        |
      i         |S )zparse responsez/.//div[contains(@class,"compTitle")]/h3/a/@hrefz.//h3//a/@aria-labelr   r1   z,.//div[contains(@class,"compTitle")]/a/@hrefz..//div[contains(@class,"compTitle")]/a/h3/spanz!//div[contains(@class,"algo-sr")]r   N)defaultrj   z$.//div[contains(@class, "compText")]T)
allow_none )r~   titlecontentz,//div[contains(@class, "AlsoTry")]//table//a
suggestion)r   
fromstringtextsearch_paramsr   r   r   r   r[   r\   r	   stripr   )respr   dom	url_xpathtitle_xpathr   resultr~   r   r   r   s              ra   responser      sQ    G
//$))
$CAI(K)F##B	F "#'JK 
!&)QE;n#FKBG!%(%f.TVWacd#G= 	 ,u"5";";"="C"C"EF88L$9$?$?$A$G$G$IJ	

, &c+YZ A
l:&>?@A Nrc   )__doc__urllib.parser   r   lxmlr   searx.utilsr   r   r   r	   about
categoriespagingtime_range_supportr   r   r   r   r   rb   r   r   r    rc   ra   <module>r      s^     +"D	 
	 sS9cc*

 	
 	
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
$  	
!" 	
#$  
'*  $#











" &	5&$& 	$& 	$	&
 	$& 	$& 	$& 	$& 	$& 	$& 	$& 	$& 	$& 	$& 	$&  	$!&" 	$#&$ 	$%&& 	$'&( 	$)&* 	$+&, 	$-&. 	$/&0 	$1&2 	$3&4 	$5&6 	$7&8 	$9&: 	$;&< 	$=&> 	$?&@ 	(A&B xC&D XE&F K&R"*1h*&)rc   