Esta es la respuesta más completa que encomtrarás brindar, sin embargo mírala pausadamente y analiza si se adapta a tu trabajo.
Solución:
diciembre 2020
Puedes usar gdown.
pip install gdown
- bajar https://drive.google.com/uc?id=file_id
Él file_id
debería verse algo como 0Bz8a_Dbh9QhbNU3SGlFaDg
Puede obtenerlo haciendo clic derecho en el archivo y luego Obtener enlace para compartir.
Solo funciona en archivos de acceso abierto (Cualquiera que tenga un enlace puede Ver). No funciona para directorios. Probado en Google Colab. Funciona mejor en la descarga de archivos. Use tar/zip para convertirlo en un solo archivo.
Ejemplo: para descargar el archivo Léame de este directorio
gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk
Escribí un fragmento de Python que descarga un archivo de Google Drive, dada una enlace para compartir. Funciona, a partir de agosto de 2017.
El recortado no sirve disco duro, ni la API de Google Drive. Utiliza el módulo de solicitudes.
Al descargar archivos grandes de Google Drive, una sola solicitud GET no es suficiente. Se necesita una segunda, y esta tiene un parámetro de URL adicional llamado confirmarcuyo valor debe ser igual al valor de una determinada cookie.
import requests
def download_file_from_google_drive(id, 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)
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)
if __name__ == "__main__":
import sys
if len(sys.argv) is not 3:
print("Usage: python google_drive.py drive_file_id destination_file_path")
else:
# TAKE ID FROM SHAREABLE LINK
file_id = sys.argv[1]
# DESTINATION FILE ON YOUR DISK
destination = sys.argv[2]
download_file_from_google_drive(file_id, destination)
Puede utilizar la herramienta de línea de comandos de Linux/Unix de código abierto gdrive
.
Para instalarlo:
-
Descarga el binario. Elija el que se adapte a su arquitectura, por ejemplo
gdrive-linux-x64
. -
Cópialo en tu camino.
sudo cp gdrive-linux-x64 /usr/local/bin/gdrive; sudo chmod a+x /usr/local/bin/gdrive;
Para usarlo:
-
Determine el ID del archivo de Google Drive. Para eso, haga clic con el botón derecho en el archivo deseado en el sitio web de Google Drive y seleccione “Obtener enlace…”. Devolverá algo como
https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. Obtener el string detrás del?id=
y cópielo en su portapapeles. Esa es la identificación del archivo. -
Descargar el archivo. Por supuesto, use la ID de su archivo en su lugar en el siguiente comando.
gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
En el primer uso, la herramienta deberá obtener permisos de acceso a la API de Google Drive. Para eso, le mostrará un enlace que debe visitar en un navegador, y luego obtendrá un código de verificación para copiar y pegar en la herramienta. A continuación, la descarga se inicia automáticamente. No hay indicador de progreso, pero puede observar el progreso en un administrador de archivos o en una segunda terminal.
Fuente: Un comentario de Tobi sobre otra respuesta aquí.
Truco adicional: limitación de velocidad. para descargar con gdrive
a una tasa máxima limitada (para no inundar la red…), puede usar un comando como este (pv
es PipeViewer):
gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H |
pv -br -L 90k |
cat > file.ext
Esto mostrará la cantidad de datos descargados (-b
) y la tasa de descarga (-r
) y limitar esa velocidad a 90 kiB/s (-L 90k
).