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, )