
    +iE                         S SK rS SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr   " S S5      rg)	    N)datetime	timedelta)
HTMLParser)CallableDictListMappingMatchTupleUnion)retrieve_url)prettyPrinterc                   h    \ rS rSrSrSrSSS.r " S S\5      rS	\	S
\	4S jr
SS	\	S\	S
S4S jjrSrg)eztv   EZTVzhttps://eztvx.to/alltv)r   r   c            	           \ rS rSrSu  rrrr S\SS4S jr	S\S\
\\\\S4   4      SS4S	 jrS
\SS4S jrS\SS4S jrSrg)eztv.MyHtmlParser   )atdtrtableurlreturnNc                    ^ [         R                  " U 5        Xl        [        R                  " 5       mU4S jU4S jU4S jU4S jU4S jS.U l        SU l        0 U l        g )Nc                 N   > T[        [        U S   5      [        U S   5      S9-
  $ )N      )hoursminutesr   intmnows    +/app/qBittorrent/data/nova3/engines/eztv.py<lambda>,eztv.MyHtmlParser.__init__.<locals>.<lambda>!   s&    cIC!IWZ[\]^[_W`4a.a    c                 N   > T[        [        U S   5      [        U S   5      S9-
  $ )Nr    r!   )daysr"   r$   r&   s    r)   r*   r+   "   s&    cI3qt9TWXYZ[X\T]4^.^r,   c                 4   > T[        [        U S   5      S9-
  $ )Nr    )weeksr$   r&   s    r)   r*   r+   #   s    S93qt93M-Mr,   c                 :   > T[        [        U S   5      S-  S9-
  $ )Nr       r.   r$   r&   s    r)   r*   r+   $   s    yc!A$i"n/M)Mr,   c                 :   > T[        [        U S   5      S-  S9-
  $ )Nr    im  r3   r$   r&   s    r)   r*   r+   %   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)   r5   eztv.MyHtmlParser.__init__   sM    %H,,.C$a$^#MM#RQD !&D35Dr,   tagattrsc                 :   S[         [        [        [        S 4   4   S[        S[        4S jn[        U5      nUR	                  S5      S:X  ax  UR	                  S5      S:X  ac  S	U l        0 U l        S
U R                  S'   S
U R                  S'   S
U R                  S'   U R                  U R                  S'   S
U R                  S'   XR                  :X  aD  U R
                  (       a3  UR	                  S5      S:X  a  UR	                  S5      U R                  S'   XR                  :X  at  U R
                  (       ab  UR	                  S5      S:X  aL  U R                  U" US5      -   U R                  S'   U" US5      R                  S5      S   U R                  S'   g g g g )Ndkeyr   c                 4    U R                  US5      nUb  U$ S$ )N )get)r>   r?   values      r)   getStr1eztv.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   dictrB   r7   r8   r   Asplit)r9   r;   r<   rD   paramss        r)   handle_starttag!eztv.MyHtmlParser.handle_starttag*   st   :'#uS$Y'7"78 :s :s : %[F

7#'<<

6*g5$(!$&!-/!!'*-/!!'*,.!!&)26((!!,/02!!*-vv))fjj.AX.M,2JJv,>!!&)vv))fjj.AX.M15F66<R1R!!+.,267,C,I,I$,OPQ,R!!&) /N) r,   datac                 j   UR                  SS5      nU R                  (       aQ  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  XR                  S'   g U R                  (       a.  UR	                  5       (       a  [        U5      U R                  S'   g U R                  (       ao  U R                  R                  5        HP  u  p#[        R                  " X!5      nU(       d  M$  [        U" U5      R                  5       5      U R                  S'     g    g g )	N,rA   z KBz MBz GBrM   rK   rO   )replacer7   endswithr8   	isnumericr%   r6   itemsrematch	timestamp)r9   r]   patterncalcr'   s        r)   handle_dataeztv.MyHtmlParser.handle_dataD   s    <<R(D!!u--u1E1EW\I]I],0!!&)""t~~'7'7-0Y!!'*""%)%6%6%<%<%>MG/Aq8;DG<M<M<O8P))*5	 &? #r,   c                     U R                   (       a-  XR                  :X  a  [        U R                  5        SU l         g g g )NF)r7   TRr   r8   )r9   r;   s     r)   handle_endtageztv.MyHtmlParser.handle_endtagT   s1      SGG^d//0$)! &4 r,   )r8   r6   r7   r   )__name__
__module____qualname____firstlineno__rX   TDrl   TABLErV   r5   r   r   r   r[   ri   rm   __static_attributes__ 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,   rw   whatr   c                    U R                    SUR                  SS5       3nSn [        X#S9$ ! [         a    Sn[        R
                  R                  X#SU05      n [        R
                  R                  U5      nUR                  5       R                  S5      s $ ! [        R                  R                   a/  n[        S	UR                   3[        R                  S
9   S nAOS nAff = f gf = f)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: )filerA   )r   r`   r   	TypeErrorurllibrequestRequesturlopenreaddecodeerrorURLErrorprintreasonsysstderr)r9   rx   r   r]   
user_agentreqresponseerrnos           r)   do_queryeztv.do_queryY   s    
(4<<s#;"<=#	77 
	 bJ..((\:4NOCL5;^^5K5KC5P}}--g66<<(( L*5<<.9

KL
	s9   . .C0=BC0C*;%C% C0%C**C0/C0catNc                     U R                  U5      nU R                  U R                  5      nUR                  U5        UR	                  5         g )N)r   rw   r   feedclose)r9   rx   r   	eztv_htmleztv_parsers        r)   searcheztv.searchj   s>    MM$'	''1#r,   rv   )r   )ro   rp   rq   rr   rH   r   supported_categoriesr   rw   rV   r   r   ru   rv   r,   r)   r   r      sX    D
C#(5@*z @*DS S "3 S T  r,   r   )http.clienthttprd   r   urllib.errorr~   urllib.requestr   r   html.parserr   typingr   r   r   r	   r
   r   r   helpersr   novaprinterr   r   rv   r,   r)   <module>r      s7   
  	 
   ( " E E E   %] ]r,   