
    +i                     |     S SK J r   S SKr S SKJr  S SKJr   " S S\5      r	g! \ a	    S SKJ r    N+f = f!    N"= f)    )
HTMLParserN)prettyPrinter)retrieve_urlc                   V    \ rS rSrSrSrSrSSS.r " S S\5      r	S	 r
S
 rSS jrSrg)linuxtracker!   z0Class used by qBittorrent to search for torrentszhttp://linuxtracker.orgzLinux Trackerr   )allsoftwarec                   J   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	rU =r$ )
linuxtracker.LinuxSearchParser,   z<Parses BakaBT browse page for search results and prints themc                    >  [         TU ]  5         Xl        X l        S U l        SU l        SU l        g !   [        R                  " U 5         N<= f)Nr   T)super__init__r   results
engine_urlcurrstrong_countwait_for_data)selfresurl	__class__s      3/app/qBittorrent/data/nova3/engines/linuxtracker.pyr   'linuxtracker.LinuxSearchParser.__init__.   sK    * " L!ODI !D!%D*##D)s	   3 Ac                 4    US:X  a  U R                  U5        g g )Na)start_a)r   tagattrs      r   handle_starttag.linuxtracker.LinuxSearchParser.handle_starttag:   s    czT"     c                 2    US:X  a  U R                  5         g g )Nstrong)
end_strong)r   r   s     r   handle_endtag,linuxtracker.LinuxSearchParser.handle_endtag>   s    h! r#   c                    [        U5      nSU;   a4  SU;   a.  SUS   ;   a%  SU R                  S-   US   -   0nX0l        SU l        g SU;   aa  SUS   ;   aX  US   U R                  S'   U R                  U R                  S	'   U R                  R                  U R                  5        S U l        g SU;   a  S
US   ;   a  SU l        g g g )Nhreftitleztorrent-details	desc_link/Tzmagnet:?linkr   peers)dictr   r   r   r   append)r   r    paramshits       r   r   &linuxtracker.LinuxSearchParser.start_aB   s    $ZFGv$5%7"DOOc$9F6N$JK	%)"6!&.0$*6N		&!*.//		,'##DII. 	6!vf~-%)" . "r#   c                 <    U =R                   S-  sl         SU l        g )N   T)r   r   r   s    r   r&   )linuxtracker.LinuxSearchParser.end_strongS   s    "!%Dr#   c                    U R                   SL GaI  U R                  SL a0  U R                  (       a  UR                  5       U R                  S'   GOU R                  SL aM  U R                  (       a<  SU;   a  [        R
                  " SSU5      nUR                  5       U R                  S'   OU R                  SL a9  U R                  (       a(   [        UR                  5       5      U R                  S	'   O^U R                  S
L a9  U R                  (       a(   [        UR                  5       5      U R                  S'   OU R                  SL a  SU l        SU l         g g !    N= f!    N= f)NTr   name   , size   seeds   leech   F)r   r   r   stripresubint)r   datas     r   handle_data*linuxtracker.LinuxSearchParser.handle_dataW   s   !!T)$$)dii(,

DIIf%&&!+		 $;#%66#r4#8D,0JJL		&)&&!+		-0->		'* &&!+		-0->		'* &&!+()D%%*"7 * 
s   &E &E" E"E&)r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r!   r'   r   r&   rI   __static_attributes____classcell__)r   s   @r   LinuxSearchParserr   ,   s)    K
	&	#	"	*"	&	+ 	+r#   rR   c                     g)zclass initializationN r7   s    r   r   linuxtracker.__init__u       r#   c                     g)z*Retrieve and save url as a temporary file.NrT   )r   infos     r   download_torrentlinuxtracker.download_torrentx   rV   r#   c                 j   [        S5      R                  U R                  U5      n/ nSnU R                  X@R                  5      n [	        USR                  U5      -   5      nUR                  U5        U H  n[        U5        M     [        U5      S:  a  OUSS2	 US-  nM^  UR                  5         g)z
Retreive and parse engine search results by category and query.

Parameters:
:param what: a string with the search tokens, already escaped
             (e.g. "Ubuntu+Linux")
:param cat:  the name of a search category, see supported_categories.
z<{0}/index.php?page=torrents&active=1&order=5&by=2&search={1}r6   z	&pages={}   N)	strformatr   rR   r   feedr   lenclose)	r   whatcatr   hitspageparserr   eachs	            r   searchlinuxtracker.search}   s      6 77=vdhh7M 	 ''hh7s[%7%7%==>CKKd#  4y2~QAID  	r#   rT   N)r	   )rK   rL   rM   rN   rO   r   r:   supported_categoriesr   rR   r   rY   rh   rP   rT   r#   r   r   r   !   s:    :
#CD
 &'A6G+J G+R#9
r#   r   )
r   ImportErrorhtml.parserrE   novaprinterr   helpersr   objectr   rT   r#   r   <module>rp      sH   &'% 
	)$
w6 w  '&'	s   % 7 44;