
    \i                     d    d dl m Z  d dlmZ d dlmZmZmZmZmZ d dl	m
Z
 d dlmZ  G d d      Zy)	    )datetime)
HTMLParser)DictListMappingTupleUnion)retrieve_url)prettyPrinterc            	       f    e Zd ZdZdZddddZ G d de      Zdd	ed
ede	defdZ
ddededdfdZy)solidtorrentszhttps://solidtorrents.tozSolid TorrentsallAudioeBook)r   musicbooksc            	           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)solidtorrents.TorrentInfoParserurlreturnNc                     t        j                  |        || _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        | j                         | _        y )NFr   )r   __init__r   foundResult
foundTitle
parseTitle
foundStatsparseSeedersparseLeechers	parseSize	parseDatecolumntorrentReadytotalResultsempty_torrent_infotorrent_info)selfr   s     2/config/qBittorrent/nova3/engines/solidtorrents.pyr   z(solidtorrents.TorrentInfoParser.__init__&   sz    %DH$D#DO#DO#DO %D!&D"DN"DNDK %D !D $ 7 7 9D    c           	      ,    ddddd| j                   dddS )N z-1)linknamesizeseedsleech
engine_url	desc_linkpub_date)r   )r&   s    r'   r$   z2solidtorrents.TorrentInfoParser.empty_torrent_info7   s(    "hh	 	r(   tagattrsc                    dt         t        t        t        d f   f   dt        dt        fd}t        |      }d ||d      v rd| _        y | j                  rd ||d      v r|d	k(  rd| _        | j
                  r/|d
k(  r*| j                   ||d      z   | j                  d<   d| _        | j                  rd ||d      v rd| _	        d| _
        | j                  r/|dk(  r*| j                  dz   | _
        | j                  dk(  rd| _        | j                  r|dk(  r| j                  dk(  rd| _        | j                  r|dk(  r| j                  dk(  rd| _        | j                  r|dk(  r| j                  dk(  rd| _        | j                  r?d ||d      v r3|d
k(  r-|j                  d      | j                  d<   d| _        d| _        y y y y )Ndkeyr   c                 2    | j                  |d      }||S dS )Nr*   )get)r7   r8   values      r'   getStrz?solidtorrents.TorrentInfoParser.handle_starttag.<locals>.getStrD   s!    c2 % 1u9r9r(   zsearch-resultclassTtitleh5ahrefr2   statsr+   div      font         z	dl-magnetr,   F)r   strr	   dictr   r   r   r%   r   r   r!   r   r   r   r    r:   r"   )r&   r4   r5   r<   paramss        r'   handle_starttagz/solidtorrents.TorrentInfoParser.handle_starttagC   s   :'#uS$Y'7"78 :s :s : %[F&"99#' Wvw0G%GcUYk"&C3J15F66<R1R!!+."&Wvw0G%G"& C5L"kkAo;;!#%)DNC6Mq8H$(!C6Mq8H%)"C5Lt{{a7G!%[F674K%KRUY\R\,2JJv,>!!&)#( $(! S]%Kr(   c                     | j                   rGt        | j                         d| _         | j                         | _        | xj                  dz  c_        y y )NFrD   )r"   r   r%   r$   r#   )r&   r4   s     r'   handle_endtagz-solidtorrents.TorrentInfoParser.handle_endtagm   sH      d//0$)!$($;$;$=!!!Q&!	 !r(   datac                    | j                   r;t        |j                               r|dk7  r|| j                  d<   d| _         d| _        | j
                  r|| j                  d<   d| _        | j                  r|| j                  d<   d| _        | j                  r|| j                  d<   d| _        | j                  r	 g d}|j                  dd	      j                         j                         \  }}}t        t        |      t        |j                  |      d
z         t        |            }t        |j                               | j                  d<   d| _        d| _        y y # t         $ r d| j                  d<   Y *w xY w)N
r-   Fr.   r/   r0   )janfebmaraprmayjunjulaugsepoctnovdec,r*   rD   r3   r+   )r   boolstripr%   r   r   r   r   r    replacelowersplitr   intindex	timestamp	Exceptionr   )r&   rP   monthsmonthdayyeardates          r'   handle_dataz+solidtorrents.TorrentInfoParser.handle_datat   sT   &44<04D%%f-"'"'~~,0!!&)!&  -1!!'*$)!!!-1!!'*%*"~~7HF)-c2)>)D)D)F)L)L)N&UC#CIs6<<3F3J/KSQTXVD478H4ID%%j1 "'"'  ! 746D%%j17s   ;BE! !E<;E<)__name__
__module____qualname__rJ   r   r   objectr$   r   r   r	   rM   rO   rn    r(   r'   TorrentInfoParserr   $   s    	: 	: 	:"
	S&[(9 
	(	)s (	)4c5dCS>S8T3U (	)Z^ (	)T	'S 	'T 	'	(C 	(D 	(r(   rt   
searchTermcategorypager   c                 b    t        | j                  dz   |z   dz   |z   dz   t        |      z         S )Nz
/search?q=z
&category=z&sort=seeders&sort=desc&page=)r
   r   rJ   )r&   ru   rv   rw   s       r'   requestzsolidtorrents.request   s>    HH|#j0<?(J-.03D	:; 	;r(   whatcatNc                     | j                   |   }t        dd      D ]`  }| j                  | j                        }|j	                  | j                  |||             |j                          |j                  dk  s` y  y )NrD   rI      )supported_categoriesrangert   r   feedry   closer#   )r&   rz   r{   rv   rw   parsers         r'   searchzsolidtorrents.search   si    ,,S1!QKD++DHH5FKKT8T:;LLN""R'  r(   )rD   )r   )ro   rp   rq   r   r-   r~   r   rt   rJ   re   ry   r   rs   r(   r'   r   r      sc    
$CD#(7WMo(J o(b;# ; ;C ; ;
3 S T r(   r   N)r   html.parserr   typingr   r   r   r   r	   helpersr
   novaprinterr   r   rs   r(   r'   <module>r      s%   .  " 4 4   %C Cr(   