Fixed Recursive Directory Upload

This commit is contained in:
jaskaranSM 2019-09-26 11:16:51 -04:00 committed by lzzy12
parent a67ddfb5be
commit 53fb5bda2e
3 changed files with 17 additions and 15 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
*.env *.env
config.ini config.ini
*conf.ini *conf.ini
conf.ini
*auth_token.txt *auth_token.txt
*.pyc *.pyc
downloads/* downloads/*

View File

@ -7,7 +7,7 @@ logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s
level=logging.INFO) level=logging.INFO)
config = configparser.ConfigParser() config = configparser.ConfigParser()
config.read('bot/config.ini') config.read('bot/conf.ini')
def getConfig(name: str): def getConfig(name: str):

View File

@ -23,7 +23,7 @@ class GoogleDriveHelper:
self.__listener = listener self.__listener = listener
self.__service = self.authorize() self.__service = self.authorize()
def upload_file(self, file_path, file_name, mime_type): def upload_file(self, file_path, file_name, mime_type,parent_id):
# File body description # File body description
media_body = MediaFileUpload(file_path, media_body = MediaFileUpload(file_path,
mimetype=mime_type, mimetype=mime_type,
@ -34,7 +34,7 @@ class GoogleDriveHelper:
'mimeType': mime_type, 'mimeType': mime_type,
} }
if parent_id is not None: if parent_id is not None:
file_metadata["parents"] = [{"id": parent_id}] file_metadata['parents'] = [parent_id]
# Permissions body description: anyone who has link can upload # Permissions body description: anyone who has link can upload
# Other permissions can be found at https://developers.google.com/drive/v2/reference/permissions # Other permissions can be found at https://developers.google.com/drive/v2/reference/permissions
permissions = { permissions = {
@ -63,7 +63,7 @@ class GoogleDriveHelper:
if os.path.isfile(file_path): if os.path.isfile(file_path):
mime_type = get_mime_type(file_path) mime_type = get_mime_type(file_path)
try: try:
g_drive_link = self.upload_file(file_path, file_name, mime_type) g_drive_link = self.upload_file(file_path, file_name, mime_type,parent_id)
LOGGER.info("Uploaded To G-Drive: " + file_path) LOGGER.info("Uploaded To G-Drive: " + file_path)
link = g_drive_link link = g_drive_link
except Exception as e: except Exception as e:
@ -71,8 +71,8 @@ class GoogleDriveHelper:
pass pass
else: else:
try: try:
dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name))) dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name)),parent_id)
self.upload_dir(file_path) self.upload_dir(file_path,dir_id)
LOGGER.info("Uploaded To G-Drive: " + file_name) LOGGER.info("Uploaded To G-Drive: " + file_name)
link = "https://drive.google.com/folderview?id={}".format(dir_id) link = "https://drive.google.com/folderview?id={}".format(dir_id)
except Exception as e: except Exception as e:
@ -87,7 +87,7 @@ class GoogleDriveHelper:
clean_download(file_dir) clean_download(file_dir)
return link return link
def create_directory(self, directory_name): def create_directory(self, directory_name,parent_id):
permissions = { permissions = {
"role": "reader", "role": "reader",
"type": "anyone", "type": "anyone",
@ -99,14 +99,14 @@ class GoogleDriveHelper:
"mimeType": self.__G_DRIVE_DIR_MIME_TYPE "mimeType": self.__G_DRIVE_DIR_MIME_TYPE
} }
if parent_id is not None: if parent_id is not None:
file_metadata["parents"] = [{"id": parent_id}] file_metadata["parents"] = [parent_id]
file = self.__service.files().create(body=file_metadata).execute() file = self.__service.files().create(body=file_metadata).execute()
file_id = file.get("id") file_id = file.get("id")
self.__service.permissions().create(fileId=file_id, body=permissions).execute() self.__service.permissions().create(fileId=file_id, body=permissions).execute()
LOGGER.info("Created Google-Drive Folder:\nName: {}\nID: {} ".format(file.get("title"), file_id)) LOGGER.info("Created Google-Drive Folder:\nName: {}\nID: {} ".format(file.get("name"), file_id))
return file_id return file_id
def upload_dir(self, input_directory): def upload_dir(self, input_directory, parent_id):
list_dirs = os.listdir(input_directory) list_dirs = os.listdir(input_directory)
if len(list_dirs) == 0: if len(list_dirs) == 0:
return parent_id return parent_id
@ -114,12 +114,13 @@ class GoogleDriveHelper:
for a_c_f_name in list_dirs: for a_c_f_name in list_dirs:
current_file_name = os.path.join(input_directory, a_c_f_name) current_file_name = os.path.join(input_directory, a_c_f_name)
if os.path.isdir(current_file_name): if os.path.isdir(current_file_name):
current_dir_id = self.create_directory(a_c_f_name) current_dir_id = self.create_directory(a_c_f_name, parent_id)
r_p_id = self.upload_dir(current_file_name) r_p_id = self.upload_dir(current_file_name, current_dir_id)
else: else:
file_name, mime_type = get_mime_type(current_file_name) mime_type = get_mime_type(current_file_name)
file_name = current_file_name.split("/")[-1]
# current_file_name will have the full path # current_file_name will have the full path
self.upload_file(current_file_name, file_name, mime_type) self.upload_file(current_file_name, file_name, mime_type, parent_id)
r_p_id = parent_id r_p_id = parent_id
return r_p_id return r_p_id