
    *iv                     l    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	  S SK
JrJr  S SKJr   " S S5      rg)	    )datetime	timedelta)
HTMLParser)AnyDictListTupleUnion)download_fileretrieve_url)prettyPrinterc            	       t    \ rS rSrSrSrSSSSSS	S
SS.rS\SS4S jr " S S\	5      r
SS\S\SS4S jjrSrg)torlock   zhttps://www.torlock.comTorLockallanimesoftwaregamemoviemusic
televisionebooks)r   r   r   gamesmoviesr   tvbooksinforeturnNc                 ,    [        [        U5      5        g N)printr   )selfr   s     ./app/qBittorrent/data/nova3/engines/torlock.pydownload_torrenttorlock.download_torrent   s    mD!"    c            	       ~    \ rS rSrS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)torlock.MyHtmlParser   zSub-class for parsing results urlr   Nc                     [         R                  " U 5        Xl        SU l        SU l        SU l        0 U l        S U l        SU l        SSSSS.U l	        g )NFr   pub_datesizeseedsleech)tdtstultdl)
r   __init__r+   article_found
item_founditem_badcurrent_item	item_name
page_itemsparser_class)r#   r+   s     r$   r5   torlock.MyHtmlParser.__init__   sW    %H!&D#DO!DM02D/3DNDO'1'-(/(/!1Dr'   tagattrsc                    [        U5      nU R                  (       a\  US:X  aU  US   nUbL  U R                  R                  U5      U l        U R                  (       a  SU R
                  U R                  '   g g g g U R                  (       a  US:X  a  UR                  S5      nUb  UR                  S5      (       a  SR                  U R                  U45      U R
                  S'   SR                  U R                  SUR                  S	5      S
   S45      U R
                  S'   U R                  U R
                  S'   SU l        SU l        SU R
                  S'   SU;   =(       a    US   S:H  U l        g g g US:X  a  SU l        0 U l        g g )Nr1   class ahrefz/torrent	desc_linkz/tor//   z.torrentlink
engine_urlTnamerelnofollowarticle)dictr7   r<   getr:   r9   r6   
startswithjoinr+   splitr8   )r#   r>   r?   paramsparam_classrH   s         r$   handle_starttag$torlock.MyHtmlParser.handle_starttag,   so   %[F$;"(/K".)-):):)>)>{)K>>@BD--dnn= * /  ##s
zz&)#z229;$((DAQ9R))+646GGTXXw=AZZ_Q=OQ[=] 5^))&1:>(()),7*.)/46))&1(-(WF5MZ<W 3 $ 	!%)"$&! "r'   datac                 j    U R                   (       a"  U R                  U R                   ==   U-  ss'   g g r!   )r:   r9   )r#   rW   s     r$   handle_data torlock.MyHtmlParser.handle_dataH   s(    ~~!!$..1T91 r'   c                    US:X  a  SU l         g U R                  (       a  US;   a  S U l        g U R                  (       Ga  US:X  Ga  SU l        U R                  (       d   U R                  S   S:X  a  [
        R                  " 5       nOWU R                  S   S:X  a   [
        R                  " 5       [        SS	9-
  nO$[
        R                  " U R                  S   S
5      nUR                  SSSSS9n[        UR                  5       5      U R                  S'   [        U R                  5        U =R                  S-  sl        0 U l        g g g ! [         a    SU R                  S'    NOf = f)NrM   F)rC   r1   trr-   Today	Yesterday   )daysz%m/%d/%Yr   )hourminutesecondmicrosecond)r6   r:   r7   r8   r9   r   nowr   strptimereplaceint	timestamp	Exceptionr   r;   )r#   r>   dates      r$   handle_endtag"torlock.MyHtmlParser.handle_endtagL   s.   i%*"SK%7!%SD["'}};,,Z8GC#+<<>D!..z:kI#+<<>I14E#ED#+#4#4T5F5Fz5RT^#_D#||1QTU|V8;DNN<L8M))*5 "$"3"34OOq(O$&!# &1 % ;8:))*5;s    B8E E('E()r6   r9   r8   r7   r:   r;   r<   r+   )__name__
__module____qualname____firstlineno____doc__strr5   r   r	   r
   rU   rY   rm   __static_attributes__ r'   r$   MyHtmlParserr)      sq    -	1 	1 	1	's 	'4c5dCS>S8T3U 	'Z^ 	'8	:C 	:D 	:	'S 	'T 	'r'   rw   querycatc                 L   UR                  SS5      nU R                  U   n[        SS5       Hs  nU R                  U R                  5      nU R                   SU SU SU 3n[        U5      nUR                  U5        UR                  5         UR                  S:  d  Ms    g	   g	)
zPerforms search z%20-r_      rF   z
/torrents/z.html?sort=seeds&page=   N)	rh   supported_categoriesrangerw   r+   r   feedcloser;   )r#   rx   ry   categorypageparserpage_urlhtmls           r$   searchtorlock.searchd   s    eS),,S1!QKD&&txx0F((1XJj?UVZU[\H)DKKLLN  2%  r'   rv   )r   )ro   rp   rq   rr   r+   rJ   r~   rt   r%   r   rw   r   ru   rv   r'   r$   r   r      sm    
#CD#(%,(2%+&-%,".%-/#S #T #F'z F'PC c d  r'   r   N)r   r   html.parserr   typingr   r   r   r	   r
   helpersr   r   novaprinterr   r   rv   r'   r$   <module>r      s%   
 ) " 0 0 / %c cr'   