
    *i                         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KJr   " S S	5      rg)
    N)datetime	timedelta)
HTMLParser)CallableDictListMappingMatchTupleUnion)quote)retrieve_url)prettyPrinterc                   r    \ rS rSrSrSrSSSSSS	S
S.r " S S\5      rS\	SS4S jr
SS\	S\	SS4S jjrSrg)limetorrents   zhttps://www.limetorrents.lolLimeTorrentsallanimeapplicationsgamesmoviesmusictv)r   r   softwarer   r   r   r   c            	           \ rS rSrSrS\SS4S j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)limetorrents.MyHtmlParser   zSub-class for parsing results messagereturnNc                     g )N )selfr   s     3/app/qBittorrent/data/nova3/engines/limetorrents.pyerrorlimetorrents.MyHtmlParser.error   s        )atdtrhrefurlc                 $  ^ [         R                  " U 5        Xl        0 U l        SU l        SU l        SU l        SU l        S U l        / SQU l	        [        R                  " 5       mU4S jU4S jU4S jU4S jU4S	 jU4S
 jU4S jS.U l        g )Nr   F)namepub_datesizeseedsleechc                    > T[        SS9-
  $ N   daysr   mnows    r$   <lambda>4limetorrents.MyHtmlParser.__init__.<locals>.<lambda>/   s    iQ.?(?r'   c                    > T[        SS9-
  $ )N   r7   r9   r:   s    r$   r=   r>   0   s    31C+Cr'   c                 :   > T[        [        U S   5      S-  S9-
  $ )Nr6   im  r7   r   intr:   s    r$   r=   r>   1   s    S9#ad)c/3R-Rr'   c                 :   > T[        [        U S   5      S-  S9-
  $ )Nr6   r@   r7   rB   r:   s    r$   r=   r>   2   s    cI3qt9r>4R.Rr'   c                 4   > T[        [        U S   5      S9-
  $ r5   rB   r:   s    r$   r=   r>   3   s    C)QqT2K,Kr'   c                 4   > T[        [        U S   5      S9-
  $ )Nr6   )hoursrB   r:   s    r$   r=   r>   4   s    S93qt93M-Mr'   c                 4   > T[        [        U S   5      S9-
  $ )Nr6   )minutesrB   r:   s    r$   r=   r>   5   s    sYs1Q4y5Q/Qr'   )	yesterdayzlast\s+monthz(\d+)\s+years?z(\d+)\s+months?z(\d+)\s+days?z(\d+)\s+hours?z(\d+)\s+minutes?)r   __init__r,   current_item
page_itemsinside_table	inside_trcolumn_indexcolumn_namecolumnsr   r<   date_parsers)r#   r,   r<   s     @r$   rK   "limetorrents.MyHtmlParser.__init__"   sv    %H35DDO %D"DN "D15DIDL,,.C?!C#R$R"K#M%QQDr'   tagattrsc                 v   [        U5      nUR                  S5      S:X  a  SU l        OU R                  (       d  g XR                  :X  aL  UR                  S5      S:X  d  UR                  S5      S:X  a"  SU l        SU l        SU R                  0U l        OU R                  (       d  g XR                  :X  a^  U =R
                  S	-  sl        U R
                  [        U R                  5      :  a  U R                  U R
                     U l        OS U l        U R                  S
:X  av  XR                  :X  af  U R                  U;   aU  US   nUbL  UR                  S5      (       a5   [        U R                  U-   SS9nXPR                  S'   XPR                  S'   g g g g g g ! [          a    U R                  U-   n N=f = f)Nclasstable2Tbgcolorz#F4F4F4z#FFFFFFr.   
engine_urlr6   r/   r+   z.htmlz/:)safelink	desc_link)dictgetrN   TRrO   rP   r,   rL   TDlenrR   rQ   AHREFendswithr   KeyError)r#   rU   rV   paramsr]   	safe_links         r$   handle_starttag)limetorrents.MyHtmlParser.handle_starttag8   s|   %[Fzz'"h.$(!&&gg~6::i#8I#ET]I^bkIk!%$&!%1488$<!^^gg~!!Q&!$$s4<<'88'+||D4E4E'FD$'+D$6)cVVm		V@Sf~#g(>(>4$)$((T/$E	 1:%%f-5>%%k2 )?# ATm)
 $ 4$(HHtO	4s   #F F87F8datac                    U R                   (       a  U R                   S;   a  UR                  SS5      nOU R                   S:X  a}  SnU R                  R                  5        HR  u  p4[        R
                  " X1[        R                  5      nU(       d  M3  [        U" U5      R                  5       5      n  O   [        U5      nUR                  5       U R                  U R                   '   S U l         g g )N)r1   r2   r3   , r0   r.   )rQ   replacerS   itemsrematch
IGNORECASErC   	timestampstrstriprL   )r#   rl   ru   patterncalcr;   s         r$   handle_data%limetorrents.MyHtmlParser.handle_dataX   s    ##'AA<<R0D%%3 "I)-):):)@)@)BHHWBMMB1(+DG,=,=,?(@I!	 *C
 y>D6:jjl!!$"2"23#'   r'   c                     US:X  a  SU l         U R                  (       aZ  XR                  :X  aJ  SU l        S U l        SU R                  ;   a+  [        U R                  5        U =R                  S-  sl        g g g g )NtableFr]   r6   )rN   rO   ra   rQ   rL   r   rM   )r#   rU   s     r$   handle_endtag'limetorrents.MyHtmlParser.handle_endtagg   se    g~$)!~~#.!&#' T...!$"3"34OOq(O / #1~r'   )	rP   rQ   rR   rL   rS   rN   rO   rM   r,   )__name__
__module____qualname____firstlineno____doc__rv   r%   rd   rb   ra   re   rK   r   r   r   rj   rz   r~   __static_attributes__r"   r'   r$   MyHtmlParserr      s    -	 	 	 42r4	 	 	,	?s 	?4c5dCS>S8T3U 	?Z^ 	?@	(C 	(D 	(		)S 		)T 		)r'   r   infor    Nc                     [        U5      n[        R                  " SU5      nU(       a8  UR                  5       (       a#  [	        UR                  5       S   S-   U-   5        g [        S5      e)Nzhref\s*\=\s*\"(magnet[^\"]+)\"r    z Error, please fill a bug report!)r   rr   searchgroupsprint
ValueError)r#   r   	info_pagemagnet_matchs       r$   download_torrentlimetorrents.download_torrentr   s\     !&	yy!BINL//11,%%'*S0478?@@r'   querycatc           	      N   UR                  SS5      nU R                  U   n[        SS5       Ht  nU R                   SU SU SU S3n[	        U5      nU R                  U R                  5      nUR                  U5        UR                  5         UR                  S:  d  Mt    g	   g	)
zPerforms search z%20-r6      z/search//z/seeds/   N)	rp   supported_categoriesranger,   r   r   feedcloserM   )r#   r   r   categorypagepage_urlhtmlparsers           r$   r   limetorrents.search|   s    eS),,S1!QKD((8H:QugWTF!LH)D&&txx0FKKLLN  2%  r'   r"   )r   )r   r   r   r   r,   r/   r   r   r   rv   r   r   r   r"   r'   r$   r   r      sm    
(CD#(%,(6%,&.%,"&(V)z V)pAS AT AC c d  r'   r   )rr   r   r   html.parserr   typingr   r   r   r	   r
   r   r   urllib.parser   helpersr   novaprinterr   r   r"   r'   r$   <module>r      s.   
 
 ( " E E E    %y yr'   