File size: 1,850 Bytes
738db08 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
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,
)
|