|
from googleapiclient.discovery import build |
|
from googleapiclient.http import MediaFileUpload |
|
from google.oauth2 import service_account |
|
import json |
|
import os |
|
import traceback |
|
|
|
def upload_to_drive(local_path, filename): |
|
creds_dict = json.loads(os.environ["GOOGLE_CREDS_JSON"]) |
|
creds = service_account.Credentials.from_service_account_info(creds_dict) |
|
service = build("drive", "v3", credentials=creds) |
|
|
|
file_metadata = { |
|
"name": filename, |
|
"parents": ["1RQx-f1UGOAY248bCIRasenJiQCHsD4Eq"] |
|
} |
|
media = MediaFileUpload(local_path, mimetype="application/zip") |
|
|
|
try: |
|
uploaded_file = service.files().create( |
|
body=file_metadata, |
|
media_body=media, |
|
fields="id" |
|
).execute() |
|
except Exception as e: |
|
print("Upload failed:") |
|
print(traceback.format_exc()) |
|
raise Exception(f"Upload to Google Drive failed: {e}") |
|
|
|
return uploaded_file.get("id") |
|
|