|
import os |
|
|
|
from pydrive2.auth import GoogleAuth |
|
from pydrive2.drive import GoogleDrive |
|
|
|
|
|
class GoogleDriveFacade: |
|
|
|
def __init__(self, setting_path: str='settings.yaml'): |
|
gauth = GoogleAuth(setting_path) |
|
gauth.LocalWebserverAuth() |
|
|
|
self.drive = GoogleDrive(gauth) |
|
|
|
def create_folder(self, folder_name): |
|
ret = self.check_files(folder_name) |
|
if ret: |
|
folder = ret |
|
print(f"{folder['title']}: exists") |
|
else: |
|
folder = self.drive.CreateFile( |
|
{ |
|
'title': folder_name, |
|
'mimeType': 'application/vnd.google-apps.folder' |
|
} |
|
) |
|
folder.Upload() |
|
|
|
return folder |
|
|
|
def check_files(self, folder_name,): |
|
query = f'title = "{os.path.basename(folder_name)}"' |
|
|
|
list = self.drive.ListFile({'q': query}).GetList() |
|
if len(list)> 0: |
|
return list[0] |
|
return False |
|
|
|
def upload(self, |
|
local_file_path: str, |
|
save_folder_name: str = 'sample', |
|
is_convert : bool=True, |
|
): |
|
|
|
if save_folder_name: |
|
folder = self.create_folder(save_folder_name) |
|
|
|
file = self.drive.CreateFile( |
|
{ |
|
'title':os.path.basename(local_file_path), |
|
'parents': [ |
|
{'id': folder["id"]} |
|
] |
|
} |
|
) |
|
file.SetContentFile(local_file_path) |
|
file.Upload({'convert': is_convert}) |
|
|
|
drive_url = f"https://drive.google.com/uc?id={str( file['id'] )}" |
|
return drive_url |
|
|
|
|
|
if __name__ == "__main__": |
|
g = GoogleDriveFacade() |
|
g.upload( |
|
local_file_path='hoge.txt', |
|
save_folder_name="test", |
|
is_convert=True, |
|
) |
|
|
|
|