|
|
import os |
|
|
from google.oauth2.credentials import Credentials |
|
|
from google_auth_oauthlib.flow import InstalledAppFlow |
|
|
from google.auth.transport.requests import Request |
|
|
from googleapiclient.discovery import build |
|
|
from googleapiclient.http import MediaFileUpload |
|
|
|
|
|
|
|
|
SCOPES = ['https://www.googleapis.com/auth/drive.file'] |
|
|
|
|
|
def authenticate_google_drive(): |
|
|
creds = None |
|
|
if os.path.exists('token.json'): |
|
|
creds = Credentials.from_authorized_user_file('token.json', SCOPES) |
|
|
if not creds or not creds.valid: |
|
|
if creds and creds.expired and creds.refresh_token: |
|
|
creds.refresh(Request()) |
|
|
else: |
|
|
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) |
|
|
creds = flow.run_local_server(port=0) |
|
|
with open('token.json', 'w') as token: |
|
|
token.write(creds.to_json()) |
|
|
return creds |
|
|
|
|
|
def upload_to_google_drive(file_path): |
|
|
creds = authenticate_google_drive() |
|
|
service = build('drive', 'v3', credentials=creds) |
|
|
|
|
|
file_metadata = {'name': os.path.basename(file_path)} |
|
|
media = MediaFileUpload(file_path, resumable=True) |
|
|
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute() |
|
|
print(f"Archivo subido con ID: {file.get('id')}") |
|
|
return file.get('id') |