Saltar al contenido

archivo grande wget/curl de google drive

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:

  1. Descarga el binario. Elija el que se adapte a su arquitectura, por ejemplo gdrive-linux-x64.

  2. Cópialo en tu camino.

    sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    sudo chmod a+x /usr/local/bin/gdrive;
    

Para usarlo:

  1. 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.

  2. 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).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *