Existe-t-il un moyen de télécharger une URL de Google Drive visualisable publiquement via curl ou wget? Par exemple, être capable de faire quelque chose comme:
curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl
Remarque: je souhaite effectuer cette opération sur un fichier accessible au public sans devoir me connecter à mon compte Google (ni laisser quelqu'un d'autre se connecter à son compte, etc.).
Si utile, les en-têtes cors que j'ai sont:
"kind": "drive#file",
"id": "1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl",
Vous devez utiliser le commutateur -L
pour que curl suive les redirections, et le commutateur correct pour le nom de fichier est -o
. Vous devriez également citer l'URL:
curl -L -o myfile.xls "https://drive.google.com/uc?export=download&id=0B4fk8L6brI_eX1U5Ui1Lb1FpVG8"
Que diriez-vous de cette méthode? Lorsque le fichier est aussi volumineux, Google renvoie un code pour le télécharger. Vous pouvez télécharger le fichier en utilisant le code. Lorsqu'un fichier aussi volumineux est téléchargé à l'aide de curl, vous pouvez voir le code comme suit.
<a id="uc-download-link" class="goog-inline-block jfk-button jfk-button-action" href="/uc?export=download&confirm=ABCD&id=### file ID ###">download</a>
La requête avec confirm=ABCD
est importante pour télécharger le fichier. Ce code est également inclus dans le cookie. Au cookie, vous pouvez le voir comme suit.
#HttpOnly_.drive.google.com TRUE /uc TRUE ##### download_warning_##### ABCD
Dans ce cas, "ABCD" est le code. Afin de récupérer le code du cookie et de télécharger le fichier, vous pouvez utiliser le script suivant.
#!/bin/bash
fileid="### file id ###"
filename="MyFile.csv"
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}
Si ce n'était pas utile pour vous, je suis désolé.
Je viens de vérifier la réponse de @tanaike et cela fonctionne à merveille. Mais la solution proposée par @Martin Broadhurst et acceptée par topicstarter ne l’est pas.
Comme Google affiche l'avertissement concernant l'analyse antivirus, qui doit être traitée, un script soc est requis.
J'aimerais voter pour la réponse de @ tanaike, mais je n'ai pas assez de réputation pour le faire :)
De plus, pour ceux qui ne savent pas comment obtenir et l'identifiant d'un fichier sur google drive, j'aimerais partager cette connaissance assez simple.
copier l'URL https://drive.google.com/file/d/1FNUZiDDDDDSSSSSSAAAAAdv42Qgzb6n8d/view?usp=sharing
collez-le dans un bloc-notes
Prendre plaisir!