Solución:
Si por “URL de la unidad” te refieres a enlace para compartir de un archivo en Google Drive, lo siguiente podría ayudar:
import requests
def download_file_from_google_drive(id, destination):
URL = "https://docs.google.com/uc?export=download"
session = requests.Session()
response = session.get(URL, params = { 'id' : id }, stream = True)
token = get_confirm_token(response)
if token:
params = { 'id' : id, 'confirm' : token }
response = session.get(URL, params = params, stream = True)
save_response_content(response, destination)
def get_confirm_token(response):
for key, value in response.cookies.items():
if key.startswith('download_warning'):
return value
return None
def save_response_content(response, destination):
CHUNK_SIZE = 32768
with open(destination, "wb") as f:
for chunk in response.iter_content(CHUNK_SIZE):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
if __name__ == "__main__":
file_id = 'TAKE ID FROM SHAREABLE LINK'
destination = 'DESTINATION FILE ON YOUR DISK'
download_file_from_google_drive(file_id, destination)
El recortado no usa pydrive, ni el SDK de Google Drive. Utiliza el módulo de solicitudes (que es, de alguna manera, una alternativa a urllib2).
Al descargar archivos grandes de Google Drive, una sola solicitud GET no es suficiente. Se necesita un segundo: consulte el archivo grande wget / curl de Google Drive.
Habiendo tenido necesidades similares muchas veces, hice una clase extra simple GoogleDriveDownloader
comenzando en el fragmento de @ user115202 anterior. Puede encontrar el código fuente aquí.
También puede instalarlo a través de pip:
pip install googledrivedownloader
Entonces el uso es tan simple como:
from google_drive_downloader import GoogleDriveDownloader as gdd
gdd.download_file_from_google_drive(file_id='1iytA1n2z4go3uVCwE__vIKouTKyIDjEq',
dest_path="./data/mnist.zip",
unzip=True)
Este fragmento descargará un archivo compartido en Google Drive. En este caso 1iytA1n2z4go3uVCwE__vIKouTKyIDjEq
es el ID del enlace para compartir obtenido de Google Drive.
Recomiendo el paquete gdown:
import gdown
url="https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c"
output="spam.txt"
gdown.download(url, output, quiet=False)