
    iv                         d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZmZmZmZ ddd	d
d
ddZdgZdZ	 dZddddZ	 dZ	 d Zd ZdefdZy)zpBing-News: description see :py:obj:`searx.engines.bing`.

.. hint::

   Bing News is *different* in some ways!

    )	urlencode)html)EngineTraits)get_locale_paramsoverride_accept_language)
eval_xpatheval_xpath_getindexeval_xpath_listextract_textzhttps://www.bing.com/newsQ2878637z*https://github.com/MicrosoftDocs/bing-docsFRSS)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsnewsTzinterval="4"zinterval="7"interval="9")dayweekmonthz,https://www.bing.com/news/infinitescrollajaxc                 r   t         j                  |d   t         j                        }t        ||       t	        |j                  dd            dz
  }| d|dz  dz   |dd}t        |      }|r|j                  |       |d   rt        j                  |d   d      |d	<   t        d
z   t        |      z   |d<   |S )zAssemble a Bing-News request.searxng_localepageno   
   PTFTNR)qInfiniteScrollfirstSFXform
time_ranger   qft?url)traits
get_region
all_localer   intgetr   updatetime_mapbase_urlr   )queryparamsengine_regionpagequery_paramslocale_paramss         (/root/searxng/searx/engines/bing_news.pyrequestr7   3   s     %%f-=&>@Q@QRMV]3 vzz(A&'!+DQL &m4MM*l&ll6,+?PUsNY|%<<F5MM    c           	         g }t        j                  | j                        }t        |d      D ];  }t	        |ddd      }||j
                  j                  d      }t        |      }t        t        |d            }g }t	        |ddd      }	|	ot	        |	ddd      |j
                  j                  d	      fD ]C  }
|
t        |
      }|s|j                         s%|j                  |j                                E d
j                  |      }d}t	        |ddd      }|1|j
                  j                  d      }|j                  d      sd|z   }|j                  |||||d       > |S )zParse the Bing-News response.z#//div[contains(@class, "newsitem")]z.//a[@class="title"]r   Nhrefz.//div[@class="snippet"]z".//div[contains(@class, "source")]z .//span[@aria-label]/@aria-labelzdata-authorz | z.//a[@class="imagelink"]//imgsrczhttps://www.bing.comzhttps://www.bing.com/)r'   titlecontent	thumbnailmetadata)r   
fromstringtextr
   r	   attribr,   r   r   stripappendjoin
startswith)respr   domnewsitemlinkr'   r<   r=   r?   sourceitemtr>   	imagelinks                 r6   responserO   R   s    G
//$))
$C#C)NO &
"8-CQM<kkoof%T"z(4NOP$X/SUVX\]#F,NPQSWX .	 	3 #$T*AQWWY 	2	3 ::h'	'2QSTVZ[	 !((,,U3I''(>?3i?	"&$	
=&
P Nr8   engine_traitsc                 >    ddl m}  ||        d| j                  d<   y)z+Fetch languages and regions from Bing-News.r   )fetch_traitszen-hkzzh-CNN)searx.engines.bingrR   regions)rP   _fs     r6   rR   rR      s!     6} &-M'"r8   N)__doc__urllib.parser   lxmlr   searx.enginelib.traitsr   rS   r   r   searx.utilsr   r	   r
   r   about
categoriespagingtime_range_supportr.   r/   r7   rO   rR    r8   r6   <module>r`      s    #  / W V +"N	 X
	A  
F : >/d- -r8   