Skip to content

Commit 7e9ced3

Browse files
committed
Add download from folder
Add download from folder
1 parent 2985fe3 commit 7e9ced3

3 files changed

Lines changed: 49 additions & 4 deletions

File tree

file_automation/remote/google_drive/download/download_file.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,30 @@ def download_file(file_id: str, file_name: str):
1414
done = False
1515
while done is False:
1616
status, done = downloader.next_chunk()
17-
print(F'Download {int(status.progress() * 100)}.')
17+
print(f"Download {file_name} {int(status.progress() * 100)}%.")
1818
except HttpError as error:
1919
print(f"An error occurred: {error}")
2020
return None
2121
with open(file_name, "wb") as output_file:
2222
output_file.write(file.getbuffer())
2323
return file
24+
25+
26+
def download_file_from_folder(folder_name: str):
27+
try:
28+
files = dict()
29+
response = driver_instance.service.files().list(
30+
q=f"mimeType = 'application/vnd.google-apps.folder' and name = '{folder_name}'"
31+
).execute()
32+
folder = response.get("files", [])[0]
33+
folder_id = folder.get("id")
34+
response = driver_instance.service.files().list(
35+
q=f"'{folder_id}' in parents"
36+
).execute()
37+
for file in response.get("files", []):
38+
download_file(file.get("id"), file.get("name"))
39+
files.update({file.get("name"): file.get("id")})
40+
return files
41+
except HttpError as error:
42+
print(f"An error occurred: {error}")
43+
return None

file_automation/remote/google_drive/upload/upload_to_driver.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
def upload_to_drive(file_name: str, file_path: str):
1010
try:
11-
if Path(file_path).is_file():
11+
if Path(file_path).exists():
1212
file_metadata = {
1313
"name": file_name,
1414
"mimeType": "*/*"
@@ -28,3 +28,28 @@ def upload_to_drive(file_name: str, file_path: str):
2828
except HttpError as error:
2929
print(f"An error occurred: {error}")
3030
return None
31+
32+
33+
def upload_to_dir(folder_id: str, file_name: str, file_path: str):
34+
try:
35+
if Path(file_path).exists():
36+
file_metadata = {
37+
"name": file_name,
38+
"mimeType": "*/*",
39+
"parents": [f"{folder_id}"]
40+
}
41+
media = MediaFileUpload(
42+
file_path,
43+
mimetype="*/*",
44+
resumable=True
45+
)
46+
file_id = driver_instance.service.files().create(
47+
body=file_metadata,
48+
media_body=media,
49+
fields="id"
50+
).execute()
51+
return file_id
52+
return False
53+
except HttpError as error:
54+
print(f"An error occurred: {error}")
55+
return None
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from file_automation.remote.google_drive.download.download_file import download_file_from_folder
12
from file_automation.remote.google_drive.search.search_drive import search_all_file
2-
from file_automation.remote.google_drive.share.share_file import share_file_to_anyone
33

44
print(search_all_file())
5-
print(share_file_to_anyone("1PlUh-iBEQF4n-0Ew0FfabVuoDZbuFpxc"))
5+
print(download_file_from_folder("new_folder"))

0 commit comments

Comments
 (0)