wget / curl grand fichier de Google drive
j'essaie de télécharger un fichier de google drive dans un script, et j'ai un peu de mal à le faire. Les fichiers que j'essaie de télécharger sont ici .
j'ai beaucoup regardé en ligne et j'ai finalement réussi à obtenir l'un d'eux à télécharger. J'ai obtenu les UIDs des fichiers et le plus petit (1,6 Mo) téléchargements amende, mais le plus grand fichier (3,7 GB) redirige toujours à une page qui me demande si je veux procéder avec le téléchargement sans un scan de virus. Quelqu'un pourrait m'aider à passer cet écran?
Voici comment j'ai eu le premier fichier -
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
Quand je lance la même chose sur l'autre fichier,
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
j'obtiens la sortie suivante -
je remarque sur la troisième à la dernière ligne dans le lien, il y a un &confirm=JwkK
qui est une chaîne de 4 caractères aléatoires mais suggère qu'il y a un façon d'ajouter une confirmation à mon URL. Un des liens que j'ai visités suggérait &confirm=no_antivirus
, mais cela ne fonctionne pas.
j'espère que quelqu'un ici peut vous aider!
Merci d'avance.
24 réponses
Regardez cette question: téléchargement Direct à partir de Google Drive en utilisant L'API Google Drive
fondamentalement, vous devez créer un répertoire public et accéder à vos fichiers par référence relative avec quelque chose comme
wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz
AVERTISSEMENT: Cette fonctionnalité est dépréciée. Voir avertissement ci-dessous dans les commentaires.
alternativement, vous pouvez utiliser ce script: https://github.com/circulosmeos/gdown.pl
j'ai écrit un extrait de Python qui télécharge un fichier à partir de Google Drive, avec un lien partageable . Il fonctionne, à partir d'août 2017 .
la puce n'utilise pas gdrive , ni L'API Google Drive. Il utilise le module requests .
lors du téléchargement de gros fichiers à partir de Google Drive, une seule requête GET n'est pas suffisante. Une deuxième est nécessaire, et celui-ci a un paramètre D'URL supplémentaire appelé confirmer , dont la valeur devrait être égale à la valeur d'un certain 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)
vous pouvez utiliser L'outil en ligne de commande open source Linux / Unix gdrive
.
pour l'installer:
-
télécharger le binaire. choisissez celle qui s'adapte à votre architecture, par exemple
gdrive-linux-x64
. -
Copiez-le sur votre chemin.
sudo cp gdrive-linux-x64 /usr/local/bin/gdrive; sudo chmod a+x /usr/local/bin/gdrive;
pour l'utiliser:
-
déterminez L'ID du fichier GoogleDrive. pour cela, cliquez avec le bouton droit de la souris sur le fichier désiré sur le site Google Drive et choisissez "Get Link...". Il retournera quelque chose comme
https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. Obtenez la chaîne derrière le?id=
et copiez-la dans votre presse-papiers. C'est le fichier de l'ID. -
Téléchargez le fichier. bien sûr, utilisez l'ID de votre fichier à la place dans la commande suivante.
gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
lors de sa première utilisation, L'outil devra obtenir les autorisations d'accès à L'API GoogleDrive. Pour cela, il vous montrera un lien que vous devez visiter dans un navigateur, puis vous obtiendrez un code de vérification pour copier&coller de nouveau à l'outil. Le téléchargement démarre alors automatiquement. Il n'y a pas de l'indicateur de progression, mais vous pouvez observer la progression dans un gestionnaire de fichiers ou deuxième terminal.
Source: un commentaire de Tobi sur une autre réponse ici.
astuce supplémentaire: limitation de la vitesse. pour télécharger avec gdrive
à un débit maximum limité (pour ne pas inonder le réseau...), vous pouvez utiliser une commande comme celle-ci (en utilisant PipeViewer ):
gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
pv -br -L 90k | \
cat > file.ext
indique la quantité de données téléchargées ( -b
) et le taux de téléchargement ( -r
) et limite ce taux à 90 kiB/s ( -L 90k
).
ggID='put_googleID_here'
ggURL='https://drive.google.com/uc?export=download'
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | sed 's/.*">//;s/<.a> .*//')"
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"
comment ça marche?
Obtenez le fichier cookie et le code html avec curl.
Pipe html à grep et sed et rechercher le nom du fichier.
Obtenez le code de confirmation du fichier cookie avec awk.
Enfin télécharger le fichier avec cookie activé, confirmer le code et le nom de fichier.
curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"
Si vous n'avez pas besoin de nom de fichier variable curl pouvez le deviner
- L suivre redirections
- O nom à distance
-J à Distance à en-tête le nom de
curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}"
pour extraire le numéro de fichier google de L'URL, vous pouvez utiliser:
echo "gURL" | egrep -o '(\w|-){26,}'
# match more than 26 word characters
ou
echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'
# replace non-word characters with new line,
# print only line with more than 26 word characters
le comportement par défaut de Google drive est d'analyser les fichiers pour les virus si le fichier est trop gros, il sera prompte à l'utilisateur et l'informe que le fichier ne pouvait pas être scanné.
pour le moment la seule solution que j'ai trouvé est de partager le fichier avec le web et créer une ressource web.
citation de la page d'aide de google drive:
avec Drive, vous pouvez rendre les ressources web - comme HTML, CSS, et les fichiers Javascript - affichable comme un site.
pour héberger une page Web avec lecteur:
- Ouvrez le Lecteur à drive.google.com et sélectionnez un fichier.
- cliquez sur le bouton Share en haut de la page.
- cliquez sur avancé dans le coin inférieur droit de la boîte de partage.
- , Cliquez Sur Du Changement....
- Choisir Sur Public sur le web et cliquez sur Enregistrer .
- avant de fermer la boîte de partage, copiez L'ID du document à partir de L'URL dans le champ ci-dessous"lien à partager". L'ID du document est une chaîne de lettres majuscules et minuscules et de chiffres entre les barres obliques de L'URL.
- partager L'URL qui ressemble à "www.googledrive.com/host / [doc id] où [doc id] est remplacé par le document ID vous avez copié à l'étape 6.
N'importe qui peut maintenant Voir votre page web.
Trouvés ici: https://support.google.com/drive/answer/2881970?hl=en
Ainsi par exemple, lorsque vous partagez un fichier sur google drive publiquement le sharelink ressemble à ceci:
https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing
ensuite vous copiez l'id du fichier et créez un googledrive.com linke qui ressemblent à ceci:
https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
voici un moyen rapide de le faire.
assurez-vous que le lien est partagé, et il ressemblera à quelque chose comme ceci:
https://drive.google.com/open?id=FILEID&authuser=0
ensuite, copiez ce FILEID et utilisez-le comme ceci
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
mise à jour en mars 2018.
j'ai essayé diverses techniques données dans d'autres réponses pour télécharger mon fichier (6 GB) directement de Google drive à mon AWS ec2 instance, mais aucun d'eux ne fonctionne (pourrait être parce qu'ils sont vieux).
Donc, pour l'information des autres, voici comment je l'ai fait avec succès:
- cliquez avec le bouton droit de la souris sur le fichier que vous souhaitez télécharger, cliquez sur Partager, sous la section link sharing, sélectionnez "quiconque possède ce lien pouvez éditer".
- Copiez le lien. Il doit être dans ce format: https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
- copie la partie FILEIDENTIFIER à partir du lien (cela ressemble à quelques caractères aléatoires).
-
Copiez le script ci-dessous dans un fichier. Il utilise curl et traite le cookie pour automatiser le téléchargement du fichier.
#!/bin/bash fileid="FILEIDENTIFIER" filename="FILENAME" curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}
-
comme montré ci-dessus, coller le FILEIDENTIFIER dans le script. N'oubliez pas de garder les guillemets doubles.
- donne un nom pour votre fichier de sortie à la place du nom du fichier. N'oubliez pas de conserver les guillemets doubles et d'inclure également L'extension dans FILENAME (par exemple, "myfile.zip.)"
- maintenant, enregistrez le fichier et rendez le fichier exécutable en exécutant cette commande dans le terminal "sudo chmod +x download-script.sh". Remplacer le "download-script.sh" avec le nom de votre script.
- exécuter le script en utilisant "./download-script.sh". Encore une fois, remplacer le "download-script.sh" avec le nom de fichier de votre script.
PS: voici le GitHub gist pour le script ci-dessus donné: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424
juin 2018 La façon la plus facile qui fonctionne pour moi
-
pip install gdown
- gdown https://drive.google.com/uc?id=file_id
le file_id
devrait ressembler à quelque chose comme 0Bz8a_Dbh9QhbNU3SGlFaDg
Vous pouvez l'obtenir en cliquant droit sur le fichier puis Obtenir partageable lien . Testé en libre accès fichier. Je ne suis pas sûr que ça marche pour directory.
Pas de réponse propose ce qui fonctionne pour moi comme des décembre 2016 ( source ):
curl -L https://drive.google.com/uc?id={FileID}
à condition que le fichier de Google Drive ait été partagé avec ceux qui ont le lien et {FileID}
est la chaîne de caractères derrière ?id=
dans l'URL partagée.
bien que je n'ai pas vérifié avec les fichiers énormes, je crois qu'il pourrait être utile de savoir.
la voie de La facilité:
(si vous en avez juste besoin pour un téléchargement unique)
- allez à la page Web de Google Drive qui a le lien de téléchargement
- ouvrez la console de votre navigateur et allez à l'onglet "Réseau
- cliquez sur le lien de téléchargement
- attendre que le fichier commence à télécharger, et trouver la requête correspondante (devrait être la dernière dans la liste), ensuite, vous pouvez annuler le téléchargement
- clic droit sur la demande et cliquez sur " Copier comme cURL "(ou similaire)
, vous devriez Vous retrouver avec quelque chose comme:
curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed
Passé dans votre console, ajouter > my-file-name.extension
à la fin (sinon il va écrire le fichier dans votre console), puis appuyez sur entrée :)
il y a un client open-source multi-plateforme, écrit dans Go: drive . C'est très agréable et complet, et est également en cours de développement.
$ drive help pull
Name
pull - pulls remote changes from Google Drive
Description
Downloads content from the remote drive or modifies
local content to match that on your Google Drive
Note: You can skip checksum verification by passing in flag `-ignore-checksum`
* For usage flags: `drive pull -h`
j'ai été incapable de faire fonctionner le script perl de Nanoix, ou d'autres exemples curl que j'avais vus, alors j'ai commencé à regarder dans l'api moi-même en python. Cela a bien fonctionné pour les petits fichiers, mais les gros fichiers se sont étouffés après la ram disponible, donc j'ai trouvé un autre code de chunking sympa qui utilise la capacité de l'api pour le téléchargement partiel. Gist ici: https://gist.github.com/csik/c4c90987224150e4a0b2
Notez le peu sur le téléchargement de client_secret JSON fichier à partir de la Interface API vers votre répertoire local.
Source$ cat gdrive_dl.py
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
"""API calls to download a very large google drive file. The drive API only allows downloading to ram
(unlike, say, the Requests library's streaming option) so the files has to be partially downloaded
and chunked. Authentication requires a google api key, and a local download of client_secrets.json
Thanks to Radek for the key functions: /q/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python-23379/"""
def partial(total_byte_len, part_size_limit):
s = []
for p in range(0, total_byte_len, part_size_limit):
last = min(total_byte_len - 1, p + part_size_limit - 1)
s.append([p, last])
return s
def GD_download_file(service, file_id):
drive_file = service.files().get(fileId=file_id).execute()
download_url = drive_file.get('downloadUrl')
total_size = int(drive_file.get('fileSize'))
s = partial(total_size, 100000000) # I'm downloading BIG files, so 100M chunk size is fine for me
title = drive_file.get('title')
originalFilename = drive_file.get('originalFilename')
filename = './' + originalFilename
if download_url:
with open(filename, 'wb') as file:
print "Bytes downloaded: "
for bytes in s:
headers = {"Range" : 'bytes=%s-%s' % (bytes[0], bytes[1])}
resp, content = service._http.request(download_url, headers=headers)
if resp.status == 206 :
file.write(content)
file.flush()
else:
print 'An error occurred: %s' % resp
return None
print str(bytes[1])+"..."
return title, filename
else:
return None
gauth = GoogleAuth()
gauth.CommandLineAuth() #requires cut and paste from a browser
FILE_ID = 'SOMEID' #FileID is the simple file hash, like 0B1NzlxZ5RpdKS0NOS0x0Ym9kR0U
drive = GoogleDrive(gauth)
service = gauth.service
#file = drive.CreateFile({'id':FILE_ID}) # Use this to get file metadata
GD_download_file(service, FILE_ID)
Voici un petit script bash que j'ai écrit qui fait le travail aujourd'hui. Il fonctionne sur les grands fichiers et peut reprendre partiellement les fichiers récupérés aussi. Elle prend deux arguments, le premier est le file_id et le second est le nom du fichier de sortie. Les principales améliorations par rapport aux réponses précédentes sont qu'il fonctionne sur de grands fichiers et n'a besoin que d'outils couramment disponibles: bash, curl, tr, grep, du, cut et mv.
#!/usr/bin/env bash
fileid=""
destination=""
# try to download the file
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`
# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
sigSize=${#bigFileSig}
if (( probeSize <= sigSize )); then
virusMessage=false
else
firstBytes=$(head -c $sigSize /tmp/probe.bin)
if [ "$firstBytes" = "$bigFileSig" ]; then
virusMessage=true
else
virusMessage=false
fi
fi
if [ "$virusMessage" = true ] ; then
confirm=$(tr ';' '\n' </tmp/probe.bin | grep confirm)
confirm=${confirm:8:4}
curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
mv /tmp/probe.bin "$destination"
fi
J'ai eu le même problème avec Google Drive.
Voici comment j'ai résolu le problème en utilisant liens 2 .
-
ouvrez un navigateur sur votre PC, naviguez vers votre fichier dans Google Drive. Donnez à votre fichier un lien public.
-
Copiez le lien public vers votre presse-papiers (par ex. clic droit, adresse du lien de copie)
-
ouvert a Terminal. Si vous téléchargez vers un autre PC / serveur / machine, vous devriez SSH à ce point
-
Installer Liens 2 (debian/ubuntu méthode, l'utilisation de votre distribution ou OS équivalent)
sudo apt-get install links2
-
collez le lien dans votre terminal et ouvrez-le avec des liens comme ceci:
links2 "paste url here"
-
naviguer à la télécharger le lien dans les liens en utilisant vos flèches et appuyez sur Enter
-
choisissez un nom de fichier et il téléchargez votre fichier
cela fonctionne à partir de Nov 2017 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db
#!/bin/bash
SOURCE=""
if [ "${SOURCE}" == "" ]; then
echo "Must specify a source url"
exit 1
fi
DEST=""
if [ "${DEST}" == "" ]; then
echo "Must specify a destination filename"
exit 1
fi
FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)
CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \n/p')
# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)
wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST
rm -f $COOKIES
Voici une solution de contournement que je suis venu fichiers de téléchargement de Google Drive à mon shell Google Cloud Linux.
- partager le fichier au PUBLIC et avec les permissions D'édition en utilisant le partage avancé.
- vous obtiendrez un lien de partage qui aurait une ID. Voir le lien:- drive.google.com/file/d/[ID] / view?usp = partage
- copiez cette ID et collez-la dans le lien suivant: -
googledrive.com/host / [ID]
- Le lien ci-dessus serait notre lien de téléchargement.
- utilisez wget pour télécharger le fichier: -
wget https://googledrive.com/host/[ID]
- cette commande téléchargez le fichier avec le nom comme [ID] sans extension et mais avec la même taille de fichier sur le même endroit où vous avez exécuté la commande wget.
- En fait, j'ai téléchargé un dossier zippé dans ma pratique. donc j'ai renommé ce fichier embarrassant en utilisant: -
mv [ID] 1.zip
- puis en utilisant
décompresser 1.zip
nous allons récupérer les fichiers.
D'après la réponse de Roshan Sethia
Mai 2018
utilisant WGET :
-
créer un script shell appelé wgetgdrive.sh comme ci-dessous:
#!/bin/bash # Get files from Google Drive # = file ID # = file name URL="https://docs.google.com/uc?export=download&id=" 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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\n/p')&id=" -O && rm -rf /tmp/cookies.txt
-
donner les bonnes permissions pour exécuter le script
-
Dans le terminal, exécutez:
./wgetgdrive.sh <file ID> <filename>
par exemple:
./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
j'ai trouvé une solution... Il suffit d'utiliser le
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=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt
skicka est un outil cli pour télécharger des fichiers d'accès à partir d'un disque google.
exemple -
skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 %
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used
Mai 2018 de TRAVAIL
Salut, sur cette base des commentaires ... je crée une bash pour exporter une liste d'URL à partir du fichier URLS.txt to a URLS_DECODED.txt utilisé dans certains accélérateurs comme flashget (j'utilise cygwin pour combiner windows et linux )
commande spider a été introduit pour éviter le téléchargement et obtenir le lien final ( directement )
commande GREP tête et couper, traiter et obtenir le lien final, est basé en langue espagnole, peut-être que vous pourriez être port à la langue anglaise
echo -e "$URL_TO_DOWNLOAD\r"
probablement le \r est seulement cywin et doit être remplacé par un \n (Ligne de rupture)
**********user***********
est le dossier utilisateur
*******Localización***********
est en langue espagnole, désactivez la asterics et de laisser le mot en anglais Emplacement et d'adapter LA TÊTE et la COUPE des numéros de le cas de l'approche.
rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do
string=$p
hash="${string#*id=}"
hash="${hash%&*}"
hash="${hash#*file/d/}"
hash="${hash%/*}"
let COUNTER=COUNTER+1
echo "Enlace "$COUNTER" id="$hash
URL_TO_DOWNLOAD=$(wget --spider --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='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
rm -rf /tmp/cookies.txt
echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt
la façon la plus facile est:
- Créer lien de téléchargement et copier fileID
- télécharger avec WGET:
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_]+).*/\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
Mai 2018
si vous voulez utiliser curl
pour télécharger un fichier à partir de Google Drive, en plus du fichier id dans drive, vous avez également besoin d'un OAuth2 access_token
pour Google Drive API. Obtenir le token implique plusieurs étapes avec le cadre de L'API Google. Les étapes d'inscription avec Google sont (actuellement) gratuites.
un OAuth2 access_token permet potentiellement toutes sortes d'activités, alors faites attention. Aussi, l' jeton de temps après une courte tandis que (1 heure?) mais pas assez courte pour prévenir les abus si quelqu'un les saisit.
une fois que vous avez un access_token et le fileid, cela fonctionnera:
AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext
Voir aussi: Google Drive Api -- RESTE de Téléchargement de Fichiers
vous avez juste besoin d'utiliser wget avec:
https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download
PD. Le dossier doit être public.
la façon la plus simple est de mettre ce que vous voulez télécharger dans un dossier. Partagez ce dossier, puis récupérez l'ID du dossier dans la barre D'URL.
puis https://googledrive.com/host / [ID] (remplacer L'ID par l'ID de votre dossier)) Vous devriez voir une liste de tous les fichiers dans ce dossier, cliquez sur celui que vous souhaitez télécharger. Un téléchargement devrait alors visiter votre page de téléchargement( Ctrl+J sur Chrome), vous voulez ensuite copier le lien de téléchargement puis utiliser wget "lien de téléchargement"
Enjoy:)