
    hj#                         S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJr  SSKJr  SSKJrJr  \\\4 H  r\R9                  \5        M      " S S5      rg)    N)FileIO)WARNING)
guess_type)LOGGERMediaFileUploadMediaIoBaseDownload)buildlogger)Http)OOB_CALLBACK_URNOAuth2WebServerFlow)r
   )Storage   )udB   )
humanbytestime_formatterc                       \ rS rSrS r\S\4S j5       r\S\4S j5       rSS\4S	 jjr	\
S
 5       r\
S 5       rS\4S jr SS\S\S\4S jjrSS\S\4S jjr\
S 5       rS rS rSrg)GDriveManager   c                     0 U l         / SQS[        S.U l        [        R                  " S5      U l        [        R                  " S5      U l        SU l        g )N)z%https://www.googleapis.com/auth/drivez*https://www.googleapis.com/auth/drive.filez.https://www.googleapis.com/auth/drive.metadataz"application/vnd.google-apps.folder)oauth_scopedir_mimetyperedirect_uriGDRIVE_AUTH_TOKENGDRIVE_FOLDER_IDz resources/auth/gdrive_creds.json)_flowr   gdrive_credsr   get_key
auth_token	folder_id
token_fileselfs    )/root/TeamUltroid/pyUltroid/fns/gDrive.py__init__GDriveManager.__init__   sL    

 A,
 ++&9:%78<    fileIdc                     SU  S3$ )Nzhttps://drive.google.com/uc?id=z&export=download r)   s    r%   _create_download_link#GDriveManager._create_download_link+   s    08HIIr(   folderIdc                     SU  3$ )Nz'https://drive.google.com/folderview?id=r+   )r/   s    r%   _create_folder_link!GDriveManager._create_folder_link/   s    8
CCr(   Ncodec                 Z   U(       a  U R                   (       a  U R                   S   nUR                  U5      n[        U R                  5      R	                  U5        [
        R                  " S[        [        U R                  5      R                  5       5      5      $  [        [
        R                  " S5      =(       d    S[
        R                  " S5      =(       d    SU R                  S   U R                  S   S	9nX R                   S'   UR                  5       $ ! [         a     g
f = f)N_r   GDRIVE_CLIENT_IDzH458306970678-jhfbv6o5sf1ar63o1ohp4c0grblp8qba.apps.googleusercontent.comGDRIVE_CLIENT_SECRETz#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r   r   )r   zFill GDRIVE client credentials)r   step2_exchanger   r"   putr   set_keystropenreadr   r   r   KeyErrorstep1_get_authorize_url)r$   r3   
_auth_flowcredentialss       r%   _create_token_file GDriveManager._create_token_file3   s    DJJCJ$33D9KDOO$((5;;2CT__8M8R8R8T4UVV	4,./ ^]23 98!!-0!..~>J )JJsO 1133  	43	4s   A.D 
D*)D*c                     [        U R                  5      nUR                  5       n[        5       nUR                  S1-
  Ul        UR                  U5        UR                  U5      $ )Ni4  )r   r"   getr   redirect_codesrefresh	authorize)r$   storagecredshttps       r%   _httpGDriveManager._httpG   sR    $//*v"11SE9dt$$r(   c                 .    [        SSU R                  SS9$ )Ndrivev2F)rK   cache_discovery)r	   rL   r#   s    r%   _buildGDriveManager._buildP   s    WdUKKr(   c                     SSS SS.nU R                   R                  5       R                  XSS9R                  U R                  S9  g )NreaderanyoneT)roletypevaluewithLink)r)   bodysupportsAllDrives)rK   )rR   permissionsinsertexecuterL   )r$   r)   _permissionss      r%   _set_permissionsGDriveManager._set_permissionsT   sL    	
 	!(( 	) 	

'tzz'
"r(   pathfilenamer!   c                 |  #    SnU(       d  UR                  S5      S   n[        U5      S   =(       d    Sn[        X&SS9nUSUS	.nU(       a	  S
U0/US'   O#U R                  (       a  S
U R                  0/US'   U R                  R                  5       R                  XSS9n	[        R                  " 5       n
S nU(       Gd  U	R                  SS9u  pU(       a  [        R                  " 5       U
-
  nUR                  nUR                  n[        X-  S-  S5      n[        X-  S5      n[        X-
  U-  S5      S-  nSU S3S[        U5       S[        U5       SU S3-   S[        U5       S3-   S[        U5       S3-   n[        US-  S:H  5      (       d  UU:w  a  UR                  U5      I S h  vN   UnU(       d  GM  UR                  S
5      n U R!                  US9  U R                  R                  5       R                  USS9R%                  5       nUR                  S5      $  Nx! ["         a     NUf = f7f)N /r   zapplication/octet-streamT)mimetype	resumablezUploaded using Ultroid Userbot)titledescriptionmimeTypeidparents)r[   
media_bodyr\      num_retriesd   r     z`Uploading z to GDrive...

Status:     »» %
Speed: /s
ETA: `      $@r,   r)   r\   webContentLink)splitr   r   r!   rR   filesr^   time
next_chunkresumable_progress
total_sizeroundr   r   editrE   ra   BaseExceptionr_   )r$   eventrc   rd   r!   last_txt	mime_typerp   r[   uploadstart_status	_progressdiff	completedr   
percentagespeedetacrnt_txtr)   _urls                         r%   _upload_fileGDriveManager._upload_file_   sa     zz#r*Ht$Q'E+E	$TN
;!

  $i01DO^^ $dnn56DO""$++ , 
 		!'!2!2q!2!AIyy{U*%88	&11
"I$:c#A1E
i.2Z3u<a@4G!(+<= I!6 7qJ9O8PPVWaVbbefg
5 12$78 nS12!45  $,1,--X1E**X...'H# '$ T"	!!!0 {{  "&&f&MUUWxx()) /
  		s=   F/H<1H*2H<H<H, #AH<,
H96H<8H99H<c           	        #    SnUR                  S5      (       a>  SU;   a  UR                  S5      S   S S nO SU;   a  UR                  S5      S S S	2   S   n U(       d9  U R                  R                  5       R	                  US
S9R                  5       S   nU R                  R                  5       R                  US
S9n[        US5       n[        R                  " 5       n[        Xu5      n	S n
U
(       Gd  U	R                  SS9u  pU(       a  [        R                  " 5       U-
  nUR                  nUR                  n[        X-  S-  S5      n[        X-  S5      n[        X-
  U-  S5      S-  nSU S3S[!        U5       S[!        U5       SU S3-   S[!        U5       S3-   S[#        U5       S3-   n[        US-  S:H  5      (       d  UU:w  a  UR%                  U5      I S h  vN   UnU
(       d  GM  S S S 5        S
U4$ ! [         a  nS[        U5      4s S nA$ S nAff = f N@! , (       d  f       S
U4$ = f7f)Nrf   rK   z	=download=r   iz/viewrg   rh   Tr~   rk   Fwbrq   rr   rt   r   ru   z`Downloading z from GDrive...

rv   rw   rx   ry   rz   r{   r|   r}   r   )
startswithr   rR   r   rE   r_   	get_media	Exceptionr;   r   r   r   r   r   r   r   r   r   r   )r$   r   r)   rd   r   
downloaderexfiler   downloadr   r   r   r   r   r   r   r   r   s                      r%   _download_fileGDriveManager._download_file   s^    V$$f$c*1-cr2F"c*4R403	"KK%%'S$S?WYw( 
 **,66 7 J
 Hd#tIIKE*4<HG%-%8%8Q%8%G"	99;.D ) < <I!*!5!5J!&	(>#'Eq!IJ!)"2A6E!75 @!DtKC'z1DE$Z	%:$;1Z
=S<TTZ[eZffijk#Ju$5#6d;< "."5!6a89  dUlq011X5I#jj222#+# g	 $, X~1  	"#b'>!	", 3) $#, X~sb   AI A(H I DH,)H**H,:I 
H'H"H'I "H''I *H,,
H=6
I c                 (   U R                   R                  5       R                  SSSSS S9R                  5       n0 nUS    HM  nUS   U R                  S   :X  a  US   X R                  US	   5      '   M4  US   X R                  US	   5      '   MO     U$ )
NTrO   )nextPageToken, items(id, title, mimeType))supportsTeamDrivesincludeTeamDriveItemsspacesfields	pageTokenitemsrm   r   rk   rn   )rR   r   listr_   r   r1   r-   )r$   _items_filesr   s       r%   _list_filesGDriveManager._list_files   s     KKT#'&*B   WY 	 G_EZ D$5$5n$EE@Eg//d<=BG.11%+>?	 %
 r(   c                    UU R                   S   S.nU R                  (       a  SU R                  0/US'   U R                  R                  5       R	                  USS9R                  5       nUR                  S5      nU R                  US9  U$ )Nr   )rk   rm   rn   ro   T)r[   r\   r,   )r   r!   rR   r   r^   r_   rE   ra   )r$   	directoryr[   r   r)   s        r%   create_directoryGDriveManager.create_directory   s    )).9
 >> $dnn56DO{{  "))tt)LTTV$V,r(   c           	         SU S3nU R                   (       a  SU R                    SU S3nU R                  R                  5       R                  SSUSSS S9R	                  5       n0 nUS	    H  nUS
   X@R                  US   5      '   M     U$ )Nztitle contains ''z"' in parents and (title contains 'z')TrO   r   )r   r   qr   r   r   r   rk   rn   )r!   rR   r   r   r_   r-   )r$   rk   queryr   r   r   s         r%   searchGDriveManager.search   s    "5'+>>''I%PRSEKKT#'&*B   WY 	 G_E>CGnF--eDk:; %r(   )r   r    r!   r   r"   )N)NN)__name__
__module____qualname____firstlineno__r&   staticmethodr;   r-   r1   rB   propertyrL   rR   ra   r   r   r   r   r   __static_attributes__r+   r(   r%   r   r      s    = Jc J J Dc D D4s 4( % % L L	#s 	# HL.*.**-.*AD.*`)# ) )V  (
r(   r   )r   ior   loggingr   	mimetypesr   apiclient.httpr   r   r   googleapiclient.discoveryr	   r
   httplib2r   oauth2client.clientr   r   _loggeroauth2client.filer   rf   r   helperr   r   logsetLevelr   r+   r(   r%   <module>r      sW         G G 3  E 1 %  .FG$CLL %S Sr(   