Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| import uuid | |
| from google.oauth2 import service_account | |
| from googleapiclient.discovery import build | |
| from googleapiclient.http import MediaFileUpload | |
| # === CONFIG === | |
| FOLDER_ID = "YOUR_GOOGLE_DRIVE_FOLDER_ID" | |
| SERVICE_ACCOUNT_FILE = "service_account.json" # Upload this securely in your Space | |
| # === Upload to Google Drive === | |
| def upload_to_drive(local_file_path, filename_on_drive): | |
| SCOPES = ['https://www.googleapis.com/auth/drive.file'] | |
| credentials = service_account.Credentials.from_service_account_file( | |
| SERVICE_ACCOUNT_FILE, scopes=SCOPES) | |
| service = build('drive', 'v3', credentials=credentials) | |
| file_metadata = { | |
| 'name': filename_on_drive, | |
| 'parents': [FOLDER_ID] | |
| } | |
| media = MediaFileUpload(local_file_path, mimetype='image/jpeg') | |
| file = service.files().create(body=file_metadata, media_body=media, fields='id').execute() | |
| return f"Uploaded to Drive with ID: {file.get('id')}" | |
| # === Gradio Camera Interface === | |
| def handle_photo(image): | |
| if image is None: | |
| return "No image captured." | |
| # Save image locally | |
| filename = f"captured_{uuid.uuid4().hex}.jpg" | |
| image.save(filename) | |
| # Upload to Drive | |
| result = upload_to_drive(filename, filename) | |
| # Clean up (optional) | |
| os.remove(filename) | |
| return result | |
| iface = gr.Interface(fn=handle_photo, | |
| inputs=gr.Image(source="camera", tool=None), | |
| outputs="text", | |
| title="Capture and Upload Photo to Drive") | |
| iface.launch() | |