
    ^in                     r   % S r SSKrSSKrSSKJrJr  SSKJrJrJr  SSK	J
r
Jr  SSKJr  SSKJr  SSKJr  \R$                  " \5      r\R*                  " S	\R,                  5      rS
 S S S S S S.r\\\\/\4   4   \S'   S\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jr  " S S\\   5      r!g)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                     [        U S9$ )N)minutesr   ns    Q/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/engines/yahoo_news.py<lambda>r      s	    	!,    c                     [        U S9$ )N)hoursr   r   s    r   r   r      	    ia(r   c                     [        U S9$ )Ndaysr   r   s    r   r   r      s	    YA&r   c                     [        U S9$ )N)weeksr   r   s    r   r   r      r   r   c                     [        SU -  S9$ )N   r   r   r   s    r   r   r      s    yb1f-r   c                     [        SU -  S9$ )Nim  r   r   r   s    r   r   r      s    iS1W-r   )minutehourdayweekmonthyear
DATE_UNITSpub_date_strreturnc                 X   [         R                  " [        R                  5      n[        R                  U 5      nU(       d  U $ [        UR                  S5      5      nUR                  S5      R                  5       n[        U   " U5      nX-
  R                  SS9nUR                  5       $ )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                     U R                  SS5      S   R                  SS5      S   R                  SS5      S   n[        U5      $ )zSanitize url.z/RU=r*   z/RK=r   ?)splitr
   )r<   urls     r   extract_urlrA   (   sF    
''&!
Q

%
%fa
0
3
9
9#q
A!
DCr   c                 B    U R                  S5      nUS:w  a  XS-   S $ U $ )zSanitize image url.z-/r+   N)find)r<   idxs     r   extract_imagerF   .   s(    
&&,C"911WY<+!+r   sc                 *    U R                  S5      S   $ )z Remove ' via Yahoo' from string.u    ·  via Yahoor   )r?   )rG   s    r   extract_sourcerI   4   s    77#$Q''r   c                       \ rS rSr% SrSrSrSrSrSr	Sr
SS	S
SSSS.r\\\\4      \S'    SS\S\S\S\S-  S\S\S\\\4   4S jjrS\\   S\\   4S jrSrg)	YahooNews9   z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_xpathqueryregion
safesearch	timelimitNpagekwargsr(   c                 N    SU0nUS:  a  US-
  S-  S-    US'   U(       a  XGS'   U$ )z'Build a payload for the search request.pr*   
   bbtf )selfrV   rW   rX   rY   rZ   r[   payloads           r   build_payloadYahooNews.build_payloadM   s<     ,!8#ax2o12GCL&ENr   resultsc                 F    U Hk  n[        UR                  5      Ul        [        UR                  5      Ul        [	        UR
                  5      Ul        [        UR                  5      Ul        Mm     U$ ! [         a!  n[        R                  SU5         SnAU$ SnAff = f)zPost-process search results.z!Error post-processing results: %rN)r;   rP   rA   r@   rF   rS   rI   rT   	Exceptionloggerwarning)rb   rf   resultexs       r   post_extract_resultsYahooNews.post_extract_results^   s    	D!*6;;7(4
,V\\: .v}} =	 "   	DNN>CC	Ds   A1A5 5
B ?BB ra   )r*   )__name__
__module____qualname____firstlineno____doc__namecategoryprovider
search_urlsearch_methoditems_xpathrU   r	   r   str__annotations__r1   dictr   rd   listr   rm   __static_attributes__ra   r   r   rK   rK   9   s    #DHH7JM+K; 6?3NHWS#X./    	
 :   
c3h"
D,< 
jAQ 
r   rK   )"rs   loggingrecollections.abcr   r   r   r   r   typingr   r	   urllib.parser
   	ddgs.baser   ddgs.resultsr   	getLoggerro   ri   compile
IGNORECASEr/   r&   r|   rz   r1   r{   r;   rA   rF   rI   rK   ra   r   r   <module>r      s       	 - 2 2   % & #			8	$
**G
W,(&(--5
Dhui/001 s s 3 3 ,S ,S ,(c (c (
/ , /r   