in infra/scripts/create_gdrive_folder.py [0:0]
def upload_with_conversion(folder_id, source_file, destination_file, file_type):
"""Upload file with conversion
Returns: ID of the file uploaded
"""
creds, _ = google.auth.default()
try:
# create drive api client
service = build("drive", "v3", credentials=creds)
results = (
service.files()
.list(
q=f"name='{destination_file}'",
pageSize=10,
fields="nextPageToken, files(id, name)",
supportsAllDrives=True,
includeItemsFromAllDrives=True,
)
.execute()
)
query = "'{}' in parents".format(folder_id)
children = (
service.files()
.list(q=query, fields="nextPageToken, files(id, name)")
.execute()
)
# print(children['files'])
fileCheck = next(
(item for item in children["files"] if item["name"] == destination_file),
None,
)
if len(children["files"]) == 0 or fileCheck == None:
file_metadata = {
"name": destination_file,
"mimeType": "application/vnd.google-apps.spreadsheet",
"parents": [folder_id],
}
media = MediaFileUpload(source_file, mimetype=file_type, resumable=True)
# pylint: disable=maybe-no-member
file = (
service.files()
.create(body=file_metadata, media_body=media, fields="id")
.execute()
)
print(f'File with ID: "{file.get("id")}" has been uploaded.')
return file.get("id")
else:
fileData = next(
(
item
for item in children["files"]
if item["name"] == destination_file
),
None,
)
print("File already Exists:", fileData["id"])
return fileData["id"]
except HttpError as error:
print(f"An error occurred: {error}")
file = None