
    \iE                         d dl Zd dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ  G d d      Zy)	    N)datetime	timedelta)
HTMLParser)CallableDictListMappingMatchTupleUnion)retrieve_url)prettyPrinterc                   Z    e Zd ZdZdZdddZ G d de      Zded	efd
Z	ddeded	dfdZ
y)eztvEZTVzhttps://eztvx.to/alltv)r   r   c            	       z    e Zd Zd\  ZZZZ	 deddfdZdede	e
eeedf   f      ddfdZd	eddfd
ZdeddfdZy)eztv.MyHtmlParser)atdtrtableurlreturnNc                     t        j                  |        || _        t        j                         fdfdfdfdfdd| _        d| _        i | _        y )Nc                 T    t        t        | d         t        | d               z
  S )N      )hoursminutesr   intmnows    )/config/qBittorrent/nova3/engines/eztv.py<lambda>z,eztv.MyHtmlParser.__init__.<locals>.<lambda>!   s&    cIC!IWZ[\]^[_W`4a.a    c                 T    t        t        | d         t        | d               z
  S )Nr   r   )daysr    r"   r$   s    r'   r(   z,eztv.MyHtmlParser.__init__.<locals>.<lambda>"   s&    cI3qt9TWXYZ[X\T]4^.^r)   c                 :    t        t        | d               z
  S )Nr   )weeksr"   r$   s    r'   r(   z,eztv.MyHtmlParser.__init__.<locals>.<lambda>#   s    S93qt93M-Mr)   c                 @    t        t        | d         dz        z
  S )Nr      r+   r"   r$   s    r'   r(   z,eztv.MyHtmlParser.__init__.<locals>.<lambda>$   s    yc!A$i"n/M)Mr)   c                 @    t        t        | d         dz        z
  S )Nr   im  r0   r"   r$   s    r'   r(   z,eztv.MyHtmlParser.__init__.<locals>.<lambda>%   s    S9#ad)c/3R-Rr)   )z(\d+)h\s+(\d+)mz(\d+)d\s+(\d+)hz(\d+)\s+weeks?z
(\d+)\s+moz(\d+)\s+years?F)r   __init__r   r   r&   date_parsersin_table_rowcurrent_item)selfr   r&   s     @r'   r2   zeztv.MyHtmlParser.__init__   sO    %DH,,.C$a$^#MM#RQD !&D35Dr)   tagattrsc                    dt         t        t        t        d f   f   dt        dt        fd}t        |      }|j	                  d      dk(  rw|j	                  d      dk(  rcd	| _        i | _        d
| j                  d<   d
| j                  d<   d
| j                  d<   | j                  | j                  d<   d
| j                  d<   || j                  k(  r>| j
                  r2|j	                  d      dk(  r|j	                  d      | j                  d<   || j                  k(  rn| j
                  ra|j	                  d      dk(  rL| j                   ||d      z   | j                  d<    ||d      j                  d      d   | j                  d<   y y y y )Ndkeyr   c                 2    | j                  |d      }||S dS )N )get)r:   r;   values      r'   getStrz1eztv.MyHtmlParser.handle_starttag.<locals>.getStr+   s!    c2 % 1u9r9r)   classforum_header_bordernamehoverTseedsleechsize
engine_urlpub_datemagnethreflinkepinfo	desc_linktitlez (r   )
r	   strr   dictr>   r4   r5   r   Asplit)r6   r7   r8   r@   paramss        r'   handle_starttagz!eztv.MyHtmlParser.handle_starttag*   sx   :'#uS$Y'7"78 :s :s : %[F

7#'<<

6*g5$(!$&!-/!!'*-/!!'*,.!!&)26((!!,/02!!*-tvv))fjj.AX.M,2JJv,>!!&)tvv))fjj.AX.M15F66<R1R!!+.,267,C,I,I$,OPQ,R!!&) /N) r)   datac                    |j                  dd      }| j                  rC|j                  d      s"|j                  d      s|j                  d      r|| j                  d<   y | j                  r)|j	                         rt        |      | j                  d<   y | j                  ri| j                  j                         D ]K  \  }}t        j                  ||      }|st         ||      j                               | j                  d<    y  y y )	N,r=   z KBz MBz GBrH   rF   rJ   )replacer4   endswithr5   	isnumericr#   r3   itemsrematch	timestamp)r6   rW   patterncalcr%   s        r'   handle_datazeztv.MyHtmlParser.handle_dataD   s    <<R(D!!u-u1EW\I],0!!&)""t~~'7-0Y!!'*""%)%6%6%<%<%>MGT$/A8;DG<M<M<O8P))*5	 &? #r)   c                 v    | j                   r-|| j                  k(  rt        | j                         d| _         y y y )NF)r4   TRr   r5   )r6   r7   s     r'   handle_endtagzeztv.MyHtmlParser.handle_endtagT   s3      SDGG^d//0$)! &4 r)   )__name__
__module____qualname__rS   TDre   TABLErQ   r2   r   r   r   rV   rc   rf    r)   r'   MyHtmlParserr      s    52r5-	6 	6 	6	Ss 	S4c5dCS>S8T3U 	SZ^ 	S4	C 	D 	 	*S 	*T 	*r)   rm   whatr   c                    | j                    d|j                  dd       }d}	 t        ||      S # t        $ r d}t        j
                  j                  ||d|i      }	 t        j
                  j                  |      }|j                         j                  d      cY S # t        j                  j                  $ r3}t        d	|j                   t        j                  
       Y d }~Y yd }~ww xY ww xY w)Nz/search/z%20-s   layout=def_wlinks)request_datazFMozilla/5.0 (X11; Linux x86_64; rv:125.0) Gecko/20100101 Firefox/125.0z
User-Agentzutf-8zConnection error: )filer=   )r   rZ   r   	TypeErrorurllibrequestRequesturlopenreaddecodeerrorURLErrorprintreasonsysstderr)r6   rn   r   rW   
user_agentreqresponseerrnos           r'   do_queryzeztv.do_queryY   s    
(4<<s#;"<=#	$77 
	 bJ..((d\:4NOCL5;^^5K5KC5P}}--g66<<(( L*5<<.9

KKL
	s3   2 .C5!=B!C5!C1>(C,&C5,C11C5catNc                     | j                  |      }| j                  | j                        }|j                  |       |j	                          y )N)r   rm   r   feedclose)r6   rn   r   	eztv_htmleztv_parsers        r'   searchzeztv.searchj   s>    MM$'	''1#r)   )r   )rg   rh   ri   rC   r   supported_categoriesr   rm   rQ   r   r   rl   r)   r'   r   r      sS    D
C#(5@*z @*DS S "3 S T r)   r   )http.clienthttpr^   r~   urllib.errorrt   urllib.requestr   r   html.parserr   typingr   r   r   r	   r
   r   r   helpersr   novaprinterr   r   rl   r)   r'   <module>r      s7   
  	 
   ( " E E E   %] ]r)   