
    +ij                     |    S SK r S SKJr  S SKJr  S SK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)
HTMLParser)AnyDictListMappingTupleUnion)unquote)retrieve_url)prettyPrinterc                   f    \ rS rSrSrSrSS0r " S S\5      rSS\	S	\	S
S4S jjr
S\	S
S4S jrSrg)torrentproject   zhttps://torrentproject.com.seTorrentProjectall0c            	           \ rS rSrS\SS4S jrS\\\4   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)torrentproject.MyHTMLParser   urlreturnNc                     [         R                  " U 5        Xl        SU l        SU l        SU l        SU l        SSSSSSS.U l        / U l        / U l	        U R                  5       U l        g )	NFr               )nametorrLinkseedsleechpub_datesize)r   __init__r   insideResultsinsideDataDivpageComplete	spanCountinfoMapfullResDatapageResget_single_datasingleResData)selfr   s     5/app/qBittorrent/data/nova3/engines/torrentproject.pyr%   $torrentproject.MyHTMLParser.__init__   sq    %H!&D!&D %DDNDL .0D)+DL!%!5!5!7D    c           	      ,    SSSSSSU R                   SS.$ )N-1)r   r!   r"   r$   link	desc_link
engine_urlr#   )r   )r/   s    r0   r-   +torrentproject.MyHTMLParser.get_single_data(   s(    !"hh 	 	r2   tagattrsc                 8   S[         [        [        [        S 4   4   S[        S[        4S jn[        U5      nUS:X  a  SU" US5      ;   a  SU l        US:X  a  UR                  SS	5      S
:X  a  SU l        US:X  a&  U R                  (       a  SU" US5      ;  a  SU l        OBUS:X  a<  U R                  (       a+  SUR                  SS	5      :w  a  U =R                  S-  sl        U R                  (       a  US:X  a  [        U5      S:  a  U R                  S   U R                  :X  a)  SU;   a#  U R                  U" US5      -   U R                  S'   U R                  S   U R                  :X  a+  SU;   a$  U R                  U" US5      -   U R                  S'   g g g g g g )Ndkeyr   c                 4    U R                  US5      nUb  U$ S$ )N )get)r<   r=   values      r0   getStr;torrentproject.MyHTMLParser.handle_starttag.<locals>.getStr5   s!    c2 % 1u9r9r2   divnavidTr?   similarfilesgac_bbclassspanverifiedtitle   ar   r    hrefr5   r   r6   )r   strr
   dictr(   r@   r&   r'   r)   lenr*   r   r.   )r/   r9   r:   rB   
attributess        r0   handle_starttag+torrentproject.MyHTMLParser.handle_starttag4   su   :'#uS$Y'7"78 :s :s : eJe|
D)A A$(!e|
tR 8N J%)"e| 2 2xvjZaGb7b%)"4#5#5*
W^`bHc:c!#!!cSjSZ!^<<
+t~~=&JBV15F:v<V1VD&&v.<<'4>>9f
>R6:hh
TZA[6[D&&{3 ?S9 6Dj!r2   c                 V   U R                   (       Gdb  US:X  GaZ  SU l        SU l        [        U R                  5      S:  Ga1  U R                  S   S:w  Ga  U R                  S   S:w  a  U R                  S   R                  5       S:w  a  U R                  S	   S:w  d  U R                  S
   S:w  a   U R                  S   n[        R                  " US5      n[        UR                  5       5      U R                  S'    [        U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        U R!                  5       U l        g g g g ! [         a     Nf = f! [         a    [        U R                  5         Nf = f)NrD   Fr   r   r   r4   r$   nomer6   r5   r#   z%Y-%m-%d %H:%M:%S)r(   r'   r)   rR   r.   lowerr   strptimeint	timestamp	Exceptionr   printr,   appendr+   r-   )r/   r9   date_stringdates       r0   handle_endtag)torrentproject.MyHTMLParser.handle_endtagH   s|   $$$%<).D&%'DN4--.2--f5=$($6$6v$>$$F$($6$6v$>$D$D$F&$P#11+>$F'+'9'9&'AT'I!)262D2DZ2PK+3+<+<[J]+^DEHIYEZD$6$6z$B!>$1$2D2D$E !% 3 3D4F4F G $ 0 0 7 78J8J K-1-A-A-C*) 3   %  (1 !)$(!) (1 !>$)$*<*<$=!>s%   1AE6 >F 6
FFF('F(datac                    U R                   (       a  U R                  R                  5        H  u  p#U R                  U:X  d  M  UnX@R                  ;   d  M*  UR                  5       S:w  d  M@  U R                  U   S:X  a  UR                  5       U R                  U'   Mr  US:w  d  Mz  U R                  U==   UR                  5       -  ss'   M     g g )Nr?   r4   r   )r'   r*   itemsr)   r.   strip)r/   rc   r=   valcurr_keys        r0   handle_data'torrentproject.MyHTMLParser.handle_datac   s    !! $ 2 2 4HC~~,#&#'9'99djjlb>P#11(;tC?Czz| 2 28 <!)V!3 $ 2 28 <

 L < !5 "r2   )	r+   r*   r'   r&   r(   r,   r.   r)   r   )__name__
__module____qualname____firstlineno__rP   r%   r   r   r-   r   r	   r
   rT   ra   ri   __static_attributes__ r2   r0   MyHTMLParserr      s    	8 	8 	8&
	T#s(^ 
		\s 	\4c5dCS>S8T3U 	\Z^ 	\(	DS 	DT 	D6		MC 		MD 		Mr2   rq   whatcatr   Nc                 :   UR                  SS5      n[        SS5       Hy  nU R                   SU SU 3n[        U5      nU R	                  U R                  5      nUR                  U5        UR                  5         [        UR                  5      S:  d  My    g    g )Nz%20+r   r   z
/browse?t=z&p=   )	replaceranger   r   rq   feedcloserR   r,   )r/   rr   rs   currPager   htmlparsers          r0   searchtorrentproject.searchn   s    ||E3'aHXXJjc(<C$D&&txx0FKKLLN6>>"R' $r2   infoc                     [        U5      n[        R                  " SU5      nU(       aJ  [        UR	                  5       5      S:  a,  [        UR                  S5      5      n[        US-   U-   5        ggg)zDownloader zhref=['"].*?(magnet.+?)['"]r   rM    N)r   rer~   rR   groupsr   groupr]   )r/   r   r|   mmagnets        r0   download_torrenttorrentproject.download_torrent{   s[    D!II7>QXXZ1$QWWQZ(F&3,%& %1r2   rp   )r   )rk   rl   rm   rn   r   r   supported_categoriesr   rq   rP   r~   r   ro   rp   r2   r0   r   r      sT    
)CD!3<YMz YMv3 S T 'S 'T 'r2   r   )r   r   html.parserr   typingr   r   r   r   r	   r
   urllib.parser   helpersr   novaprinterr   r   rp   r2   r0   <module>r      s+    
  " 9 9     %s' s'r2   