
    Oi`"                        S SK Jr  \" 5         S SKJr  S SKJrJr  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Jr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJ r J!r!  \" S5      RE                  \5        \" S5      RE                  \5        Sq#Sq$\" SSSS9r%\S\4S j5       r&\" \&S9r'\" SS9r(\" S\" S5      \" 5       /\S9  \" \)5      r*S r+\'RY                  S\S9S \4S! j5       r-\'R]                  S"S#S$/\S%9S \4S& j5       r/S' r0S( r1S) r2S* r3\'RY                  S+\S9S, 5       r4\'Rk                  \65      S- 5       r7g).    )install)asynccontextmanager)FastAPIRequest)HTMLResponseJSONResponse)Jinja2Templates)	getLoggerFileHandlerStreamHandlerINFObasicConfigWARNING)sleep)SabnzbdClient)Aria2HttpClient)create_client)ClientError)AQError)extract_file_ids	make_treehttpxaiohttpNzhttp://localhostmltb8070)hostapi_keyportappc                   #    [        S5      q[        S5      I S h  vN qS 7v   [        R	                  5       I S h  vN   [        R	                  5       I S h  vN   g  NB N# N	7f)Nzhttp://localhost:6800/jsonrpczhttp://localhost:8090/api/v2/)r   aria2r   qbittorrentclose)r   s    /app/web/wserver.pylifespanr%      sP      ;<E%&EFFK	
++-



 Gs1   A%A A%A!A%A#A%!A%#A%)r%   zweb/templates/)	directoryz4%(asctime)s - %(name)s - %(levelname)s - %(message)szlog.txt)formathandlerslevelc                 ~  #    Sn [         R                  R                  U5      I S h  vN nSnU HM  nUR                  U ;   a  UR                  S:w  a  Sn  O*UR                  U;   d  M9  UR                  S:X  d  MK  Sn  O   U(       a  O[
        R                  S5        [        S5      I S h  vN   U (       a'   [         R                  R                  X SS9I S h  vN   U(       a'   [         R                  R                  X!SS9I S h  vN   US-  nUS
:  a  gGM  [
        R                  SU 35        g GN N N_! [        [        [        [        4 a"  n[
        R                  U S35         S nANS nAff = f Nr! [        [        [        [        4 a"  n[
        R                  U S	35         S nANS nAff = f7f)Nr   TFz*Reverification Failed! Correcting stuff...      ?hashidpriorityz" Errored in reverification paused!   z# Errored in reverification resumed!   zVerified! Hash: )r"   torrentsfilesindexr/   LOGGERinfor   	file_prior   TimeoutError	Exceptionr   error)pausedresumedhash_idkresverifyies           r$   	re_verifyrC   6   s    	A
((..w77Aww& QZZ1_ww'!ajjAo  @ACjG!**44 a 5   
 H!**44 q 5   
 	
Qq5= > KK"7),-? 8 	  y'B Gs"DEFFG  y'B Hs"EFGGHs   &F=D6=F=*F=<1F=-D9.F=:!D= D;D=  F=(!E> 	E<
E> )F=9F=;D= =E9E4/F=4E99F=<E> >F:F50F=5F::F=z
/app/files)response_classrequestc                 6   #    [         R                  U S5      $ 7f)Nz	page.html)	templatesTemplateResponse)rE   s    r$   r3   r3   [   s     %%g{;;s   z/app/files/torrentGETPOST)methodsrD   c                 $  #    U R                   nUR                  S5      =n(       d  [        / SSSS.5      $ UR                  S5      =n(       d  [        / SSSS.5      $ SR                  U Vs/ s H  oDR	                  5       (       d  M  UPM     snS S	 5      nXS:w  a  [        / SS
SS.5      $ U R
                  S:X  Ga  UR                  S5      =n(       d  [        / SSSS.5      $ U R                  5       I S h  vN nUS:X  a4  [        U5      S:  a  [        X'5      I S h  vN   / SSSS.nGOd/ SSSS.nGO[[        U5      u  pUR                  S5      (       a  [        X*5      I S h  vN   OH[        U5      S:  a  [        X)U
5      I S h  vN   O$SR                  U	5      n	[        X)5      I S h  vN   / SSSS.nO UR                  S5      (       a*  [        R                  U5      I S h  vN n[!        US5      nO[        U5      S:  a4  ["        R$                  R'                  U5      I S h  vN n[!        US5      nOP[(        R+                  U5      I S h  vN n[(        R-                  U5      I S h  vN nUS    S3n[!        USU5      n [        U5      $ s  snf  GN GN GN@ GN N N N NY N>! [.        [0        [2        [4        4 a8  n[6        R9                  [;        U5      5        / SS[;        U5      S.n S nANsS nAff = f7f)Ngid zGID is missingzGID not specified)r3   enginer:   messagepinzPin is missingzPIN not specified   zInvalid pinz The PIN you entered is incorrectrJ   modezMode is not specifiedrename   zRename successfully.zRename failed.z!Cannot rename aria2c torrent fileSABnzbd_nzo,z/Your selection has been submitted successfully.sabnzbdr"   dir/r!   zError getting files)query_paramsgetr   joinisdigitmethodjsonlenhandle_renamer   
startswithset_sabnzbdset_qbittorrent	set_aria2sabnzbd_client	get_filesr   r"   r2   r3   r!   getFiles	getOptionr   r8   r9   r   r5   r:   str)rE   paramsrM   rQ   nbrcoderS   datacontentselected_filesunselected_filesr?   opfpathrB   s                  r$   handle_torrentru   `   s     !!F::e$$C$).	
 	
 ::e$$C$).	
 	
 77383C++-C38!<=D{&=	
 	
 ~~

6*** 46	  \\^#83x"}#C... 5	   -B	 0@/E,N~~m,,!#888SB%c;KLLL!$.!9444L	G	~~m,,*44S99#C3SB'0066s;;#C7!NN3// ??3//e9+Q#C%8   U 9* $ /" 9L 5 : < 0/ \9g> 	LLQ .q6	G	s   A,L.J 
J A+L;J%<'L#J($AL+J+,#LJ.$L4J15L.J; 0J31J; L1J; 3J54J; LJ; J7J; :J9;J; L(L+L.L1L3J; 5J; 7J; 9J; ;L.LLLLc                 Z  #     US   nUS	 US:X  a+  [         R                  R                  " SSU 0UD6I S h  vN   g [         R                  R                  " SSU 0UD6I S h  vN   g  N0 N! [        [
        [        [        4 a"  n[        R                  U S35         S nAg S nAff = f7f)Ntypefiler-   z Errored in renaming )
r"   r2   rename_filerename_folderr   r8   r9   r   r5   r:   )rM   ro   _typerB   s       r$   rb   rb      s     1VLF?&&22DDtDDD&&44F#FFFF EFy': 1s./001sZ   B+3A, A(A, B+%A, "A*#A, 'B+(A, *A, ,B(B#B+#B((B+c                 z   #    [         R                  X5      I S h  vN   [        R                  SU  35        g  N7f)NzVerified! nzo_id: )rg   remove_filer5   r6   )rM   rr   s     r$   rd   rd      s2     

$
$S
;;;
KK$SE*+ <s   ;9;c                 Z  #    U(       a'   [         R                  R                  XSS9I S h  vN   U(       a'   [         R                  R                  XSS9I S h  vN   [        S5      I S h  vN   [        X!U 5      I S h  vN (       d  [        R                  SU  35        g g  Nx! [        [        [
        [        4 a"  n[        R                  U S35         S nANS nAff = f N! [        [        [
        [        4 a"  n[        R                  U S35         S nANS nAff = f N N7f)Nr   r,   z Errored in pausedr0   z Errored in resumedr+   zVerification Failed! Hash: )r"   r2   r7   r   r8   r9   r   r5   r:   r   rC   )rM   rq   rr   rB   s       r$   re   re      s    	3&&00 1   
 	4&&00a 1   
 *+SAAA23%89 B \9g> 	3LLA30122	3 \9g> 	4LLA31233	4As   D+!B' B%B' D+!C( C&C( D+-D'.D+D)#D+%B' 'C#CD+C##D+&C( (D$DD+D$$D+)D+c                    #    [         R                  U SU05      I S h  vN nUS:X  a  [        R                  SU  35        g [        R                  SU  35        g  N<7f)Nzselect-fileOKzVerified! Gid: z"Verification Failed! Report! Gid: )r!   changeOptionr5   r6   )rM   rq   r?   s      r$   rf   rf      sS     ""3(GH
HC
d{ocU+,8>?	 Is   AA=ArZ   c                     #     g7f)Na  <h1>This is mirror-leech-telegram-bot modified by <a href='https://github.com/RIR18'>RIR18</a></h1><br><br><h3><a href='/downloads/' target='_blank'>Download Folder</a><br><a href='/downloads/log.txt' target='_blank'>MLTB Log</a><br><br><a href='/rcl/' target='_blank'>Rclone Index</a><br><br><a href='/alist/' target='_blank'>Alist Server</a><br><a href='/ttyd/' target='_blank'>ttyd Terminal</a><br><br><a href='/qbt/' target='_blank'>qBittorrent</a><br><a href='/sabnzbd/' target='_blank'>Usernet</a><br><br><a href='https://gdrive.blacktape.ggff.net' target='_blank'>Index Link</a><br><a href='https://gdrive-r.rir18.workers.dev' target='_blank'>Index Link-R</a><br><br><a href='https://webui9.blacktape.ggff.net' target='_blank'>WebUI</a></h3>ry   ry       r$   homepager      s      	ws   c                 &   #    [        SU S3SS9$ 7f)Nz<<h1>404: Task not found! Mostly wrong input. <br><br>Error: z</h1>i  )status_code)r   )_excs     r$   page_not_foundr      s!     
Fse5Q s   )8uvloopr   
contextlibr   fastapir   r   fastapi.responsesr   r   fastapi.templatingr	   loggingr
   r   r   r   r   r   asyncior   
sabnzbdapir   aioaria2r   aioqbt.clientr   aiohttp.client_exceptionsr   
aioqbt.excr   	web.nodesr   r   setLevelr!   r"   rg   r%   r   rG   __name__r5   rC   r\   r3   	api_routeru   rb   rd   re   rf   r   exception_handlerr9   r   ry   r   r$   <module>r      s    	 * $ 8 . U U  $ $ ' 1  1 	'   G $ 	)   g &		    x  &67	 A)$mo6
 
8	"J l3< < 4< 5&/,  a!' a!a!H	1,
:(@ \* + y! "r   