
    [ij                     |    d dl Z d dlmZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	      Zy)
    N)datetime)
HTMLParser)AnyDictListMappingTupleUnion)unquote)retrieve_url)prettyPrinterc                   X    e Zd ZdZdZddiZ G d de      Zddeded	d
fdZ	ded	d
fdZ
y
)torrentprojectzhttps://torrentproject.com.seTorrentProjectall0c            	           e Zd ZdeddfdZdeeef   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)torrentproject.MyHTMLParserurlreturnNc                     t        j                  |        || _        d| _        d| _        d| _        d| _        ddddddd| _        g | _        g | _	        | j                         | _        y )	NFr               )nametorrLinkseedsleechpub_datesize)r   __init__r   insideResultsinsideDataDivpageComplete	spanCountinfoMapfullResDatapageResget_single_datasingleResData)selfr   s     3/config/qBittorrent/nova3/engines/torrentproject.pyr#   z$torrentproject.MyHTMLParser.__init__   ss    %DH!&D!&D %DDNDL .0D)+DL!%!5!5!7D    c           	      ,    dddddd| j                   ddS )N-1)r   r   r    r"   link	desc_link
engine_urlr!   )r   )r-   s    r.   r+   z+torrentproject.MyHTMLParser.get_single_data(   s(    !"hh 	 	r/   tagattrsc                    dt         t        t        t        d f   f   dt        dt        fd}t        |      }|dk(  rd ||d      v rd| _        |dk(  r|j                  dd	      d
k(  rd| _        |dk(  r| j                  rd ||d      vrd| _        n;|dk(  r6| j                  r*d|j                  dd	      k7  r| xj                  dz  c_        | j                  r|dk(  rt        |      dkD  r| j                  d   | j                  k(  r'd|v r#| j                   ||d      z   | j                  d<   | j                  d   | j                  k(  r)d|v r$| j                   ||d      z   | j                  d<   y y y y y y )Ndkeyr   c                 2    | j                  |d      }||S dS )N )get)r8   r9   values      r.   getStrz;torrentproject.MyHTMLParser.handle_starttag.<locals>.getStr5   s!    c2 % 1u9r9r/   divnavidTr;   similarfilesgac_bbclassspanverifiedtitle   ar   r   hrefr2   r   r3   )r   strr
   dictr&   r<   r$   r%   r'   lenr(   r   r,   )r-   r5   r6   r>   
attributess        r.   handle_starttagz+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!r/   c                 8   | j                   sZ|dk(  rSd| _        d| _        t        | j                        dkD  r+| j                  d   dk7  r| j                  d   dk7  r| j                  d   j                         dk7  r| j                  d	   dk7  s| j                  d
   dk7  r	 | j                  d   }t        j                  |d      }t        |j                               | j                  d<   	 t        | j                         | j                  j                  | j                         | j                  j                  | j                         | j!                         | _        y y y y # t        $ r Y w xY w# t        $ r t        | j                         Y w xY w)Nr?   Fr   r   r   r1   r"   nomer3   r2   r!   z%Y-%m-%d %H:%M:%S)r&   r%   r'   rM   r,   lowerr   strptimeint	timestamp	Exceptionr   printr*   appendr)   r+   )r-   r5   date_stringdates       r.   handle_endtagz)torrentproject.MyHTMLParser.handle_endtagH   sy   $$%<).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%   %AE) 1E8 )	E54E58FFdatac                    | j                   r| j                  j                         D ]  \  }}| j                  |k(  s|}|| j                  v s'|j                         dk7  s;| j                  |   dk(  r|j                         | j                  |<   k|dk7  sq| j                  |xx   |j                         z  cc<    y y )Nr;   r1   r   )r%   r(   itemsr'   r,   strip)r-   r\   r9   valcurr_keys        r.   handle_dataz'torrentproject.MyHTMLParser.handle_datac   s    !! $ 2 2 4HC~~,#&#t'9'99djjlb>P#11(;tC?Czz| 2 28 <!)V!3 $ 2 28 <

 L < !5 "r/   )__name__
__module____qualname__rK   r#   r   r   r+   r   r	   r
   rO   r[   rb    r/   r.   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r/   rg   whatcatr   Nc                 4   |j                  dd      }t        dd      D ]w  }| j                   d| d| }t        |      }| j	                  | j                        }|j                  |       |j                          t        |j                        dk  sw y  y )Nz%20+r   r   z
/browse?t=z&p=   )	replaceranger   r   rg   feedcloserM   r*   )r-   rh   ri   currPager   htmlparsers          r.   searchztorrentproject.searchn   s    ||E3'aHXXJjc(<C$D&&txx0FKKLLN6>>"R' $r/   infoc                     t        |      }t        j                  d|      }|rIt        |j	                               dkD  r,t        |j                  d            }t        |dz   |z          yyy)z Downloader zhref=['"].*?(magnet.+?)['"]r   rH    N)r   rert   rM   groupsr   grouprW   )r-   ru   rr   mmagnets        r.   download_torrentztorrentproject.download_torrent{   s[    D!II7>QXXZ1$QWWQZ(F&3,%& %1r/   )r   )rc   rd   re   r   r   supported_categoriesr   rg   rK   rt   r}   rf   r/   r.   r   r      sT    
)CD!3<YMz YMv3 S T 'S 'T 'r/   r   )rx   r   html.parserr   typingr   r   r   r   r	   r
   urllib.parser   helpersr   novaprinterr   r   rf   r/   r.   <module>r      s+    
  " 9 9     %s' s'r/   