File size: 3,806 Bytes
c87f53a |
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
from googleapiclient.http import MediaFileUpload, MediaIoBaseUpload
import json
import os
from io import BytesIO
import time
import io
file_metadata = {
"name": "Fake",
"mimeType": "application/vnd.google-apps.folder",
}
file_result = {
"name": "Result",
"mimeType": "application/vnd.google-apps.folder",
}
file_report = {
"name": "Report",
"mimeType": "application/vnd.google-apps.folder",
}
def checkFake(service, path="root", Folder_Name="Fake"):
resource = service.files()
result = resource.list(
q=f"mimeType = 'application/vnd.google-apps.folder' and '{path}' in parents",
fields="nextPageToken, files(id, name)",
).execute()
list_folders = result.get("files")
fake_folder_id = None
result_folder_id = None
report_folder_id = None
for folder in list_folders:
if folder["name"] == Folder_Name:
fake_folder_id = folder["id"]
break
if not fake_folder_id:
fake_folder = service.files().create(body=file_metadata, fields="id").execute()
fake_folder_id = fake_folder["id"]
result_folder = (
service.files()
.create(
body={
"name": "Result",
"mimeType": "application/vnd.google-apps.folder",
"parents": [fake_folder_id],
"type": "anyone",
"role": "reader",
},
fields="id",
)
.execute()
)
result_folder_id = result_folder["id"]
report_folder = (
service.files()
.create(
body={
"name": "Report",
"mimeType": "application/vnd.google-apps.folder",
"parents": [fake_folder_id],
},
fields="id",
)
.execute()
)
report_folder_id = report_folder["id"]
return fake_folder_id, result_folder_id, report_folder_id
def checkRespectiveFolder(service, path="root", Folder_Name="Fake"):
resource = service.files()
result = resource.list(
q=f"mimeType = 'application/vnd.google-apps.folder' and '{path}' in parents",
fields="nextPageToken, files(id, name)",
).execute()
list_folders = result.get("files")
fake_folder_id = None
for folder in list_folders:
if folder["name"] == Folder_Name:
fake_folder_id = folder["id"]
break
return fake_folder_id
def CheckFolders(service):
fake_folder_id = checkFake(service)
return "Folders created or already existed."
def AddReport(service, fileName, file):
fake_folder_id = checkRespectiveFolder(service)
report_folder_id = checkRespectiveFolder(
service, path=fake_folder_id, Folder_Name="Report"
)
file_metadata = {"name": fileName, "parents": [report_folder_id]}
media = MediaFileUpload(file, mimetype="application/pdf")
newFile = (
service.files()
.create(body=file_metadata, media_body=media, fields="id")
.execute()
)
return newFile.get("id")
def DeleteReport(service, fileName):
fake_folder_id = checkRespectiveFolder(service)
report_folder_id = checkRespectiveFolder(
service, path=fake_folder_id, Folder_Name="Report"
)
response = (
service.files()
.list(
q="mimeType='application/pdf' and '" + report_folder_id + "' in parents",
spaces="drive",
fields="files(id, name)",
pageToken=None,
)
.execute()
)
for i in response["files"]:
if i["name"] == fileName:
file_id = i["id"]
service.files().delete(fileId=file_id).execute()
break
|