
    i                         S SK Jr  S SKJr  S SKJr  S SK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  \" \5      r " S	 S
\5      rg)    )	HttpError)	getLogger)path)retrywait_exponentialstop_after_attemptretry_if_exception_type
RetryError)time   )async_to_sync)GoogleDriveHelperc                   z   ^  \ rS rSrU 4S jrS rS rS r\" \	" SSSS	9\
" S5      \" \5      S
9S 5       rSrU =r$ )GoogleDriveClone   c                 z   > Xl         [        5       U l        [        TU ]  5         SU l        U R                  5         g )NT)listenerr   _start_timesuper__init__
is_cloninguser_setting)selfr   	__class__s     8/app/bot/helper/mirror_leech_utils/gdrive_utils/clone.pyr   GoogleDriveClone.__init__   s0     6    c                 Z   U R                   R                  R                  S5      (       d*  U R                   R                  R                  S5      (       a]  SU R                   R                   S3U l        U R                   R                  R                  SSS5      U R                   l        SU l        g U R                   R                  R                  S5      (       a>  U R                   R                  R                  SSS5      U R                   l        SU l        g U R                   R                  R                  S5      (       d*  U R                   R                  R                  S5      (       a>  U R                   R                  R                  SSS5      U R                   l        S	U l        g g )
Nzmtp:ztokens/z.pickle    Fztp:zsa:T)r   up_dest
startswithlinkuser_id
token_pathreplaceuse_sa)r   s    r   r   GoogleDriveClone.user_setting   s9   ==  ++F33t}}7I7I7T7T8
 8
 !((=(='>gFDO$(MM$9$9$A$A&"a$PDMM!DK]]""--e44$(MM$9$9$A$A%Q$ODMM!DK]]""--e448J8J8U8U9
 9
 %)MM$9$9$A$A%Q$ODMM!DK	9
r   c                 H    U R                  U R                  R                  5      nU R                  5       U l        Sn[        R                  SU 35         U R                  U5      nUR                  S5      nX@R                  :X  Ga  U R                  UR                  S5      U R                  R                  5      nU R                  UR                  S5      UR                  S5      U5        U R                  R!                  U5      nU R                  R"                  (       aL  [        R                  S5        U R                  R%                  5       R'                  USS	9R)                  5         g
SnU R*                  U R                  l        OU R/                  UR                  S5      U R                  R                  5      nUSUR                  S5       S3-  nU R0                  R!                  UR                  S5      5      nUc  Sn[3        UR                  SS5      5      U R                  l        UUU R4                  U R6                  U R                  U5      4$ ! [        [        4 a     gf = f! [8         Ga!  n[;        U[<        5      (       aF  [        R                  SUR>                  R@                   35        UR>                  RC                  5       n[E        U5      RG                  SS5      RG                  SS5      nSU;   a  SnOhSU;   a]  U RH                  (       dI  U RJ                  (       a8  SU l$        SU l%        [        RM                  S5        U RO                  5       s S nA$ SnOSU 3n[Q        U R                  RR                  U5         S nAg
S nAff = f)N)z7Google Drive ID could not be found in the provided linkNNNNr   z	File ID: mimeTypenameidz"Deleting cloned data from Drive...T)fileIdsupportsAllDrives)NNNNNFolderz<b>Name: </b><code>z</code>Filesizer   zTotal Attempts: ><zUser rate limit exceededzUser rate limit exceeded.zFile not foundFz+File not found. Trying with token.pickle...zFile not found.zError.
)*get_id_from_urlr   r#   KeyError
IndexError	authorizeserviceLOGGERinfoget_file_metadatagetG_DRIVE_DIR_MIME_TYPEcreate_directoryr!   _clone_folderG_DRIVE_DIR_BASE_DOWNLOAD_URLformatis_cancelledfilesdeleteexecute
proc_bytesr1   
_copy_fileG_DRIVE_BASE_DOWNLOAD_URLinttotal_filestotal_folders	Exception
isinstancer
   last_attemptattempt_number	exceptionstrr&   alt_authr'   errorcloner   on_upload_error)	r   file_idmsgmeta	mime_typedir_iddurlfileerrs	            r   rT   GoogleDriveClone.clone+   s   		**4==+=+=>G ~~'iy)*.	0))'2D,I666..txx/?AVAVW""488F#3TXXd^VL99@@H==--KK DELL&&(//% 0 gi7$	%)__"txx~t}}7L7LM,TXXf-=,>gFF55<<TXXd^L$ &I%(&!)<%="  ""$$T* C *% 		P  	0#z**.s/?/?/N/N.OPQ&&002c(""3+33C<C)S01!S(}}$(DM"'DKLL!NO::<'' &$--77=/#	0s>   %I DI5 1C-I5 I21I25N! C)N)N!/(NN!c           	         [         R                  SU 35        U R                  U5      n[        U5      S:X  a  U$ U GH?  nUR	                  S5      U R
                  :X  a~  U =R                  S-  sl        [        R                  " XR	                  S5      5      nU R                  UR	                  S5      U5      nU R                  XeR	                  S5      U5        GOU R                  R                  (       aa  UR	                  S5      R                  5       R                  5       R                  [!        U R                  R                  5      5      (       d  GM  U R                  R                  (       da  UR	                  S5      R                  5       R                  5       R                  [!        U R                  R"                  5      5      (       a  GM  U =R$                  S-  sl        U R'                  UR	                  S5      U5        U =R(                  [+        UR	                  SS5      5      -  sl        [+        [-        5       U R.                  -
  5      U l        U R                  R2                  (       d  GM@    g    g )Nz	Syncing: r   r*   r    r+   r,   r1   )r9   r:   get_files_by_folder_idlenr<   r=   rK   ospathjoinr>   r?   r   included_extensionsstriplowerendswithtupleexcluded_extensionsrJ   rG   rF   rI   r   r   
total_timerB   )r   folder_name	folder_iddest_idrC   r\   	file_pathcurrent_dir_ids           r   r?   GoogleDriveClone._clone_folderi   s   i}-.++I6u:?NDxx
#t'A'AA""a'""KKXXf5EF	!%!6!6txx7G!Q""9hhtnnM22488<egeeghhuT]]-N-N'OP<Q ]]66488<egeeghhuT]]-N-N'OP<Q   A% 83txx':#;;"%dft/?/?&?"@}})))) r      r      )
multiplierminmax)waitstopr   c                 D   SU/0n U R                   R                  5       R                  XSS9R                  5       $ ! [         GaW  nUR
                  R                  SS5      R                  S5      (       Ga  [        UR                  5      R                  S5      R                  S5      S	   R                  S
5      nUS;  a  UeUS:X  a  [        R                  U5         S nAg U R                  (       a  U R                  U R                  :  a$  [        R                  SU R                   35        UeU R                   R"                  (       a   S nAg U R%                  5         U R'                  X5      s S nA$ [        R                  SU 35        Ue S nAg S nAff = f)NparentsT)r-   bodyr.   zcontent-typer   zapplication/jsonrS   errorsr   reason)userRateLimitExceededdailyLimitExceededcannotCopyFiler   z?Reached maximum number of service accounts switching, which is zGot: )r8   rC   copyrE   r   respr<   r"   evalcontentr9   rS   r'   sa_count	sa_numberr:   r   rB   switch_service_accountrG   )r   rV   rm   rz   r]   r|   s         r   rG   GoogleDriveClone._copy_file   sW    G9%	""$W4H
  	xx||NB/::;MNNckk*..w7;;HEaHLLXV " 
 I--LL%%[[}}6]^b^k^k]lm "	==55"335#w@@LL5!12I/ O	s/   5= FBF&A*F F5F;FF)r   rR   r   r   r8   r%   rj   r'   )__name__
__module____qualname____firstlineno__r   r   rT   r?   r   r   r   r	   rL   rG   __static_attributes____classcell__)r   s   @r   r   r      sM     <0|6 q9"%i0
 
 r   r   N)googleapiclient.errorsr   loggingr   osr   rb   tenacityr   r   r   r	   r
   r   ext_utils.bot_utilsr   &mirror_leech_utils.gdrive_utils.helperr   r   r9   r    r   r   <module>r      s<    ,     0 G	8	V( Vr   