Estoy tratando de descargar un archivo de Google Drive en un script, y tengo algunos problemas para hacerlo. Los archivos que intento descargar están aquí .
He buscado mucho en línea y finalmente logré descargar uno de ellos. Obtuve los UID de los archivos y el más pequeño (1,6 MB) se descarga bien, sin embargo, el archivo más grande (3,7 GB) siempre redirige a una página que me pregunta si quiero continuar con la descarga sin un análisis de virus. ¿Podría alguien ayudarme a pasar esa pantalla?
Así es como conseguí el primer archivo funcionando:
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
Cuando ejecuto lo mismo en el otro archivo,
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
Me sale el siguiente resultado:
Noto en la penúltima línea del enlace, hay una &confirm=JwkK
cadena aleatoria de 4 caracteres pero sugiere que hay una manera de agregar una confirmación a mi URL. Uno de los enlaces que visité sugirió &confirm=no_antivirus
pero eso no funciona.
¡Espero que alguien aquí pueda ayudar con esto!
curl script
que utilizó para descargar el archivogoogle drive
ya que no puedo descargar un archivo de trabajo (imagen) de este scriptcurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
gdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
Respuestas:
ADVERTENCIA : esta funcionalidad está en desuso. Vea la advertencia a continuación en los comentarios.
Eche un vistazo a esta pregunta: descarga directa desde Google Drive utilizando la API de Google Drive
Básicamente, debe crear un directorio público y acceder a sus archivos por referencia relativa con algo como
Alternativamente, puede usar este script: https://github.com/circulosmeos/gdown.pl
fuente
export=download
por lo que debería ser bueno para el futuro previsible a menos que Google cambie ese esquema de URLJunio 2020
pip install gdown
El
file_id
debería verse como 0Bz8a_Dbh9QhbNU3SGlFaDgPuede obtenerlo haciendo clic derecho en el archivo y luego en Obtener enlace para compartir. Solo funciona en archivos de acceso abierto (cualquier persona 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
fuente
export=download&
desdegdown https://drive.google.com/uc?export=download&id=your_file_id
y funciona como encantoEscribí un fragmento de Python que descarga un archivo de Google Drive, dado un enlace para compartir . Funciona, a partir de agosto de 2017 .
El recortado no usa gdrive , 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 un segundo, y este tiene un parámetro de URL adicional llamado confirmar , cuyo valor debe ser igual al valor de una determinada cookie.
fuente
python snippet.py file_id destination
. ¿Es esta la forma correcta de ejecutarlo? Porque si el destino es una carpeta, me arroja un error. Si formo un archivo y lo uso como destino, el fragmento parece funcionar bien pero no hace nada.$ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx
me funcionó. en caso de que no funcione, ¿tiene alguna salida disponible? ¿Se crea algún archivo?Puede usar la herramienta de línea de comandos de código abierto Linux / Unix
gdrive
.Para instalarlo:
Descargar el binario. Elija el que se adapte a su arquitectura, por ejemplo
gdrive-linux-x64
.Cópialo a tu camino.
Para usarlo:
Determine la ID del archivo de Google Drive. Para eso, haga clic derecho en el archivo deseado en el sitio web de Google Drive y elija "Obtener enlace ...". Volverá algo así
https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. Obtenga la cadena detrás de la?id=
y cópiela en su portapapeles. Esa es la identificación del archivo.Descargar el archivo. Por supuesto, use la ID de su archivo en el siguiente comando.
En el primer uso, la herramienta necesitará 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. La descarga se inicia automáticamente. No hay un indicador de progreso, pero puede observar el progreso en un administrador de archivos o en un segundo terminal.
Fuente: Un comentario de Tobi sobre otra respuesta aquí.
Truco adicional: limitación de velocidad. Para descargar
gdrive
a una velocidad máxima limitada (para no saturar la red ...), puede usar un comando como este (pv
es PipeViewer ):Esto mostrará la cantidad de datos descargados (
-b
) y la velocidad de descarga (-r
) y limitará esa velocidad a 90 kiB / s (-L 90k
).fuente
¿Como funciona?
Obtenga el archivo cookie y el código html con curl.
Canalice html a grep y sed y busque el nombre del archivo.
Obtenga el código de confirmación del archivo cookie con awk.
Finalmente descargue el archivo con la cookie habilitada, confirme el código y el nombre del archivo.
Si no necesita variable de nombre de archivo, la curvatura puede adivinarlo
-L Seguir redirecciones
-O Nombre
remoto -J Nombre -encabezado remoto
Para extraer la ID del archivo de Google de la URL, puede usar:
O
fuente
--insecure
opción a ambas solicitudes de curl para que funcione.Actualización a partir de marzo de 2018.
Probé varias técnicas dadas en otras respuestas para descargar mi archivo (6 GB) directamente desde la unidad de Google a mi instancia de AWS ec2, pero ninguna de ellas funciona (puede ser porque son viejas).
Entonces, para información de otros, así es como lo hice con éxito:
https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
Copie el siguiente script en un archivo. Utiliza curl y procesa la cookie para automatizar la descarga del archivo.
Como se muestra arriba, pegue el IDENTIFICADOR DE ARCHIVO en el script. ¡Recuerde mantener las comillas dobles!
myfile.zip
).sudo chmod +x download-gdrive.sh
.PD: Aquí está la esencia de Github para el script anterior: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424
fuente
-c
con--save-cookies
y-b
con--load-cookies
"
citas${filename}
en la última línea../download-gdrive.sh" Do not be like me and try to run the script by typing
download-gdrive.sh, the
. / `Parece ser obligatorio.Aquí hay una forma rápida de hacer esto.
Asegúrese de que el enlace sea compartido, y se verá así:
https://drive.google.com/open?id=FILEID&authuser=0
Luego, copie ese FILEID y úselo así
fuente
wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
-r
bandera dewget
. Así eswget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
El comportamiento predeterminado de Google Drive es escanear archivos en busca de virus si el archivo es demasiado grande, le preguntará al usuario y le notificará que el archivo no se pudo escanear.
Por el momento, la única solución que encontré es compartir el archivo con la web y crear un recurso web.
Cita de la página de ayuda de Google Drive:
Con Drive, puede hacer que los recursos web, como archivos HTML, CSS y Javascript, se puedan ver como un sitio web.
Para alojar una página web con Drive:
Encontrado aquí: https://support.google.com/drive/answer/2881970?hl=en
Entonces, por ejemplo, cuando comparte un archivo en Google Drive públicamente, el enlace Sharelink se ve así:
Luego copia la identificación del archivo y crea un linke de googledrive.com que se ve así:
fuente
La manera fácil:
(si solo lo necesita para una descarga única)
Deberías terminar con algo como:
Péguelo en su consola, agréguelo
> my-file-name.extension
al final (de lo contrario, escribirá el archivo en su consola), luego presione enter :)fuente
Basado en la respuesta de Roshan Sethia
Mayo 2018
Usando WGET :
Cree un script de shell llamado wgetgdrive.sh como se muestra a continuación:
Otorgue los permisos correctos para ejecutar el script
En la terminal, ejecute:
por ejemplo:
fuente
chmod 770 wgetgdrive.sh
--ACTUALIZADO--
Para descargar el archivo primero obtenga
youtube-dl
Python desde aquí:youtube-dl: https://rg3.github.io/youtube-dl/download.html
o instalarlo con
pip
:ACTUALIZAR:
Me acabo de enterar de esto:
Haga clic derecho en el archivo que desea descargar desde drive.google.com
Hacer clic
Get Sharable link
Activar
Link sharing on
Haga clic en
Sharing settings
Haga clic en el menú desplegable superior para ver las opciones.
Haga clic en más
Seleccione
[x] On - Anyone with a link
Copiar link
Copie la identificación después de
https://drive.google.com/file/d/
:Pegue esto en la línea de comando:
Pega la identificación detrás
open?id=
Espero eso ayude
fuente
Ninguna respuesta propone lo que funciona para mí a partir de diciembre de 2016 ( fuente ):
siempre que el archivo de Google Drive se haya compartido con quienes tengan el enlace y
{FileID}
sea la cadena detrás?id=
de la URL compartida.Aunque no verifiqué con archivos enormes, creo que podría ser útil saberlo.
fuente
curl -L -o {filename} https://drive.google.com/uc?id={FileID}
funcionó para mí, gracias!La forma más fácil es:
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
fuente
Las respuestas anteriores están desactualizadas para abril de 2020, ya que Google Drive ahora usa una redirección a la ubicación real del archivo.
Trabajando a partir de abril de 2020 en macOS 10.15.4 para documentos públicos:
fuente
download-google-2
funciona para mi. Mi archivo tiene un tamaño 3G. Gracias @ danieltan95download-google-2
el último rizo a estocurl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;
y ahora puede reanudar la descarga.Tuve el mismo problema con Google Drive.
Así es como resolví el problema usando Links 2 .
Abra un navegador en su PC, navegue hasta su archivo en Google Drive. Dele a su archivo un enlace público.
Copie el enlace público a su portapapeles (por ejemplo, clic derecho, Copiar dirección del enlace)
Abre una terminal. Si está descargando a otra PC / servidor / máquina, debe usar SSH en este punto
Instale Links 2 (método debian / ubuntu, use su distribución o equivalente de SO)
sudo apt-get install links2
Pegue el enlace en su terminal y ábralo con Enlaces así:
links2 "paste url here"
Navegue hasta el enlace de descarga dentro de Enlaces con las teclas de flecha y presione Enter
Elija un nombre de archivo y descargará su archivo
fuente
Links
totalmente hizo el truco! Y es mucho mejor quew3m
Usa youtube-dl !
youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890
También puede pasar
--get-url
para obtener una URL de descarga directa.fuente
youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage
. tal vez tenga una versión desactualizadayoutube-dl
o el formato de enlace no sea reconocido por alguna razón ... Intente usar el formato anterior reemplazando la identificación con la identificación del archivo de su URL originalHe estado usando el fragmento de rizo de @ Amit Chahar, quien publicó una buena respuesta en este hilo. Me pareció útil ponerlo en una función bash en lugar de un
.sh
archivo separadoque puede incluirse, por ejemplo, en a
~/.bashrc
(después de obtenerlo, por supuesto, si no se obtiene automáticamente) y usarse de la siguiente manerafuente
Hay un cliente multiplataforma de código abierto, escrito en Go: drive . Es bastante agradable y completo, y también está en desarrollo activo.
fuente
Todas las respuestas anteriores parecen oscurecer la simplicidad de la respuesta o tienen algunos matices que no se explican.
Si el archivo se comparte públicamente, puede generar un enlace de descarga directa con solo conocer la ID del archivo. La URL debe tener el formato " https://drive.google.com/uc?id=[FILEIDfont>&export=download " Esto funciona a partir del 22/11/2019. Esto no requiere que el receptor inicie sesión en Google, pero sí requiere que el archivo se comparta públicamente.
En su navegador, navegue a drive.google.com.
Haga clic derecho en el archivo y haga clic en "Obtener un enlace para compartir"
Edite la URL para que esté en el siguiente formato, reemplazando "[FILEID]" con la ID de su archivo compartido:
https://drive.google.com/uc?id=[FILEIDfont>&export=download
Ese es tu enlace de descarga directa. Si hace clic en él en su navegador, el archivo ahora será "empujado" a su navegador, abriendo el cuadro de diálogo de descarga, permitiéndole guardar o abrir el archivo. También puede usar este enlace en sus scripts de descarga.
Entonces el comando curl equivalente sería:
fuente
Google Drive can't scan this file for viruses. <filename> is too large for Google to scan for viruses. Would you still like to download this file?
No pude hacer funcionar el script perl de Nanoix, u otros ejemplos curl que había visto, así que comencé a buscar en la API yo mismo en Python. Esto funcionó bien para archivos pequeños, pero los archivos grandes se atragantaron con el RAM disponible, por lo que encontré otro buen código de fragmentación que usa la capacidad de la API para la descarga parcial. Gist aquí: https://gist.github.com/csik/c4c90987224150e4a0b2
Tenga en cuenta el bit sobre la descarga del archivo client_secret json desde la interfaz API a su directorio local.
Fuentefuente
Aquí hay un pequeño script de bash que escribí que hace el trabajo hoy. Funciona en archivos grandes y también puede reanudar archivos parcialmente recuperados. Se necesitan dos argumentos, el primero es el file_id y el segundo es el nombre del archivo de salida. Las principales mejoras sobre las respuestas anteriores aquí son que funciona en archivos grandes y solo necesita herramientas comúnmente disponibles: bash, curl, tr, grep, du, cut y mv.
fuente
Esto funciona a partir de noviembre de 2017 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db
fuente
Después de jugar con esta basura. He encontrado una manera de descargar mi dulce archivo usando las herramientas de desarrollo de Chrome.
Le mostrará la solicitud en la consola "Red"
Haga clic derecho -> Copiar -> Copiar como Curl
-o
para crear un archivo exportado.curl 'https://docs.google.com/spreadsheets/d/1Cjsryejgn29BDiInOrGZWvg/export?format=xlsx&id=1Cjsryejgn29BDiInOrGZWvg' -H 'authority: docs.google.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X..... -o server.xlsx
Resuelto!
fuente
Aquí hay una solución alternativa que se me ocurrió descargar archivos de Google Drive a mi shell de Google Cloud Linux.
googledrive.com/host/[ID]
wget https://googledrive.com/host/[ID]
mv [ID] 1.zip
descomprimir 1.zip
vamos a obtener los archivos
fuente
Encontré una solución que funciona para esto ... Simplemente use lo siguiente
fuente
Hay una manera más fácil.
Instale cliget / CURLWGET desde la extensión firefox / chrome.
Descargue el archivo del navegador. Esto crea un enlace curl / wget que recuerda las cookies y los encabezados utilizados al descargar el archivo. Use este comando desde cualquier shell para descargar
fuente
la manera fácil de bajar archivos de Google Drive también puede descargar archivos en Colab
Luego
o
Documento https://pypi.org/project/gdown/
fuente
Mayo 2018 TRABAJANDO
Hola, basado en estos comentarios ... creo un bash para exportar una lista de URL del archivo URLS.txt a un URLS_DECODED.txt y se usa en algún acelerador como flashget (uso cygwin para combinar windows y linux)
Se introdujo la araña de comandos para evitar la descarga y obtener el enlace final (directamente)
Comando GREP HEAD y CUT, procese y obtenga el enlace final, está basado en el idioma español, tal vez podría ser portador a IDIOMA INGLÉS
echo -e "$URL_TO_DOWNLOAD\r"
probablemente el \ r es solo cywin y debe ser reemplazado por un \ n (línea de corte)**********user***********
es la carpeta de usuario*******Localización***********
está en idioma español, borra los asterianos y deja que la palabra en inglés se ubique y adapta THE HEAD y los números de CUT para un enfoque apropiado.fuente
Solo necesita usar wget con:
PD. El archivo debe ser público.
fuente
skicka es una herramienta cli para cargar, descargar archivos de acceso desde una unidad de google.
ejemplo
fuente