
    6jz                     r   U d Z ddlZddlZddlmZmZ ddlmZmZmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ  ej        e          Z ej        d	ej                  Zd
 d d d d d dZeeeegef         f         ed<   dedefdZdedefdZdedefdZdedefdZ  G d dee                   Z!dS )zYahoo! News search engine.    N)CallableMapping)datetime	timedeltatimezone)AnyClassVar)unquote_plus)BaseSearchEngine)
NewsResultz/\b(\d+)\s*(year|month|week|day|hour|minute)s?\bc                 "    t          |           S )N)minutesr   ns    Y/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/yahoo_news.py<lambda>r      s    	!,,,     c                 "    t          |           S )N)hoursr   r   s    r   r   r          ia((( r   c                 "    t          |           S )Ndaysr   r   s    r   r   r      s    YA&&& r   c                 "    t          |           S )N)weeksr   r   s    r   r   r      r   r   c                 (    t          d| z            S )N   r   r   r   s    r   r   r      s    yb1f--- r   c                 (    t          d| z            S )Nim  r   r   r   s    r   r   r      s    iS1W--- r   )minutehourdayweekmonthyear
DATE_UNITSpub_date_strreturnc                    t          j        t          j                  }t                              |           }|s| S t          |                    d                    }|                    d                                          }t          |         |          }||z
  
                    d          }|                                S )zExtract date from string.      r   )microsecond)r   nowr   utcDATE_REsearchintgrouplowerr&   replace	isoformat)r'   r-   mnumberunitdeltadts          r   extract_dater;      s    
,x|
$
$C|$$A __F771::DtV$$E
+		1		-	-B<<>>r   uc                     |                      dd          d                              dd          d                              dd          d         }t          |          S )zSanitize url.z/RU=r*   z/RK=r   ?)splitr
   )r<   urls     r   extract_urlrA   (   sR    
''&!

Q

%
%fa
0
0
3
9
9#q
A
A!
DCr   c                 V    |                      d          }|dk    r| |dz   d         n| S )zSanitize image url.z-/r+   N)find)r<   idxs     r   extract_imagerF   .   s/    
&&,,C"991S1WYY<<!+r   sc                 <    |                      dd          d         S )z Remove ' via Yahoo' from string.u    ·  via Yahoor*   )maxsplitr   )r?   )rG   s    r   extract_sourcerJ   4   s    77#a70033r   c                       e Zd ZU dZdZdZdZdZdZdZ	ddd	d
dddZ
eeeef                  ed<   	 ddededededz  dededeeef         fdZdee         dee         fdZdS )	YahooNewszYahoo news search engine.yahoonewsz$https://news.search.yahoo.com/searchGETz//div[@id='web']//li[a]z).//span[contains(@class, 'time')]//text()z.//h4//text()z.//p//text()z.//h4/a/@hrefz#(.//img/@data-src | .//img/@src)[1]z+.//span[contains(@class, 'source')]//text())datetitlebodyr@   imagesourceelements_xpathr*   queryregion
safesearch	timelimitNpagekwargsr(   c                 F    d|i}|dk    r|dz
  dz  dz    |d<   |r||d<   |S )z'Build a payload for the search request.pr*   
   bbtf )selfrV   rW   rX   rY   rZ   r[   payloads           r   build_payloadzYahooNews.build_payloadM   sE     ,!88#ax2o13GCL 	'&GENr   resultsc                 @   	 |D ]f}t          |j                  |_        t          |j                  |_        t	          |j                  |_        t          |j                  |_        gn2# t          $ r%}t          
                    d|           Y d}~nd}~ww xY w|S )zPost-process search results.z!Error post-processing results: %rN)r;   rP   rA   r@   rF   rS   rJ   rT   	Exceptionloggerwarning)rb   re   resultexs       r   post_extract_resultszYahooNews.post_extract_results^   s    	D! > >*6;77(44
,V\:: .v} = =	>
  	D 	D 	DNN>CCCCCCCC	Ds   A)A, ,
B6BB)r*   )__name__
__module____qualname____doc__namecategoryprovider
search_urlsearch_methoditems_xpathrU   r	   r   str__annotations__r1   dictr   rd   listr   rl   ra   r   r   rL   rL   9   s        ##DHH7JM+K; 6?3 3NHWS#X./       	
 :   
c3h   "
D,< 
jAQ 
 
 
 
 
 
r   rL   )"rp   loggingrecollections.abcr   r   r   r   r   typingr   r	   urllib.parser
   	ddgs.baser   ddgs.resultsr   	getLoggerrm   rh   compile
IGNORECASEr/   r&   ry   rw   r1   rx   r;   rA   rF   rJ   rL   ra   r   r   <module>r      s          				 - - - - - - - - 2 2 2 2 2 2 2 2 2 2                 % % % % % % & & & & & & # # # # # #		8	$	$
"*G
W
W,,((&&((----5 5
Dhui/001   s s    3 3    ,S ,S , , , ,4c 4c 4 4 4 4
/ / / / / , / / / / /r   