wget / curl gros fichier à partir de Google Drive

337

J'essaie de télécharger un fichier à partir 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 cherché en ligne et j'ai finalement réussi à en télécharger un. J'ai obtenu les UID des fichiers et le plus petit (1,6 Mo) se télécharge bien, mais le fichier le plus gros (3,7 Go) redirige toujours vers une page qui me demande si je veux poursuivre le téléchargement sans analyse antivirus. Quelqu'un pourrait-il m'aider à passer cet écran?

Voici comment j'ai fait fonctionner 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 - entrez la description de l'image ici

Je remarque sur la troisième à la dernière ligne du lien, il y a une &confirm=JwkKchaîne aléatoire de 4 caractères, mais suggère qu'il existe un moyen d'ajouter une confirmation à mon URL. L'un des liens que j'ai visités m'a suggéré &confirm=no_antivirusmais cela ne fonctionne pas.

J'espère que quelqu'un ici pourra vous aider!

Arjun
la source
pouvez-vous s'il vous plaît fournir le que curl scriptvous avez utilisé pour télécharger le fichier google drivecar je ne peux pas télécharger un fichier de travail (image) à partir de ce scriptcurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
Kasun Siyambalapitiya
Regardez la réponse acceptée. J'ai utilisé le script gdown.plgdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
Arjun
2
N'ayez pas peur de faire défiler! Cette réponse fournit un très beau script python à télécharger en une seule fois.
Ciprian Tomoiagă
./gdrive download [FILEID] [--recursive si c'est un dossier] il vous demandera d'accéder à une URL donnée et de copier-coller un code de jeton.
roj4s

Réponses:

60

AVERTISSEMENT : cette fonctionnalité est obsolète. Voir l'avertissement ci-dessous dans les commentaires.


Jetez un œil à cette question: Téléchargement direct depuis Google Drive à l'aide de 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

Vous pouvez également utiliser ce script: https://github.com/circulosmeos/gdown.pl

guadafan
la source
5
un autre bon moyen est d'utiliser l'outil de ligne de commande linux "gdrive" github.com/prasmussen/gdrive
Tobi
1
J'ai pu utiliser le script perl de Nanolx en combinaison avec le permalien google drive créé sur gdurl.com - Merci!
jadik
14
AVERTISSEMENT: la prise en charge de l'hébergement Web dans Google Drive est obsolète. "À compter du 31 août 2015, l'hébergement Web dans Google Drive pour les utilisateurs et les développeurs sera obsolète. Les clients Google Apps peuvent continuer à utiliser cette fonctionnalité pendant une période d'un an jusqu'au 31 août 2016, lorsqu'ils diffusent du contenu via googledrive.com/host / doc id sera interrompu. " googleappsupdates.blogspot.com/2015/08/…
chrish
9
Malheureusement, cela ne fonctionne plus à partir de 2018.
Calimo
3
gdown.pl a très bien fonctionné pour moi aussi. Un rapide coup d'œil au script montre qu'il n'utilise pas cette API, il crée une nouvelle URL avec un paramètre, export=downloaddonc cela devrait être bon dans un avenir prévisible à moins que Google ne modifie ce schéma d'URL
Ben Baron
298

Juin 2020

Le file_iddevrait ressembler à quelque chose comme 0Bz8a_Dbh9QhbNU3SGlFaDg

Vous pouvez l'obtenir en faisant un clic droit sur le fichier, puis en obtenant un lien partageable. Ne fonctionne que sur les fichiers en libre accès (toute personne disposant d'un lien peut afficher). Ne fonctionne pas pour les répertoires. Testé sur Google Colab. Fonctionne mieux sur le téléchargement de fichiers. Utilisez tar / zip pour en faire un seul fichier.

Exemple: pour télécharger le fichier readme depuis ce répertoire

gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk
phi
la source
9
Il suffit de retirer export=download&de gdown https://drive.google.com/uc?export=download&id=your_file_idet cela fonctionne comme un charme
Saravanabalagi Ramachandran
8
Celui-ci a fonctionné en juillet 2018! N'oubliez pas de partager le fichier et si vous avez le lien en tant que drive.google.com/open?id=FILE_ID, remplacez simplement "open" par "uc" et simplement gdown drive.google.com/uc?id=FILE_ID
simo23
8
Comment pouvons-nous télécharger un dossier depuis Gdrive en utilisant gdown?
user1
9
Ne fonctionne pas en août 2019. Erreur: "Autorisation refusée: drive.google.com/uc?id=0B7EVK8r0v71pWEZsZE9oNnFzTm8 Vous devez peut-être modifier l'autorisation sur" Toute personne disposant du lien "?" Et c'est le jeu de données CelebA téléchargeable publiquement, donc ça devrait aller. J'ai acquis le lien de téléchargement en cliquant sur «obtenir le lien partageable», puis il a été dit «partage de lien sur» et «toute personne disposant du lien peut le voir». Il semble donc que l'autorisation soit déjà accordée, mais l'erreur indique que l'autorisation est refusée. Voici le site hôte si vous voulez l'essayer: mmlab.ie.cuhk.edu.hk/projects/CelebA.html
Kristof
7
C'est la seule solution sur la demi-douzaine que j'ai essayée qui fonctionne. Il doit être voté pour le premier. Il me suffisait de changer le "lien partagé" de: drive.google.com/open?id=XXXX en drive.google.com/uc?id=XXXX
deprekate
199

J'ai écrit un extrait de code Python qui télécharge un fichier à partir de Google Drive, avec un lien partageable . Cela fonctionne, à partir d'août 2017 .

Le snipped n'utilise pas gdrive , ni l'API Google Drive. Il utilise le module de requêtes .

Lors du téléchargement de fichiers volumineux à partir de Google Drive, une seule requête GET n'est pas suffisante. Un deuxième est nécessaire, et celui-ci a un paramètre d'URL supplémentaire appelé confirm , dont la valeur doit ê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)
turdus-merula
la source
J'exécute l'extrait python snippet.py file_id destination. Est-ce la bonne façon de l'exécuter? Parce que si la destination est un dossier, une erreur est générée. Si je durcis un fichier et que je l'utilise comme destination, l'extrait semble fonctionner correctement mais ne fait rien.
Manfredo
3
@Manfredo vous avez besoin du nom de fichier que vous souhaitez enregistrer le fichier, par exemple, a $ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx fonctionné pour moi. au cas où cela ne fonctionne pas, avez-vous une sortie fournie? un fichier est-il créé?
Jeff
1
@CiprianTomoiaga J'ai 90% d'une barre de progression qui fonctionne, en utilisant le module Python tqdm. J'ai fait un résumé : gist.github.com/joshtch/8e51c6d40b1e3205d1bb2eea18fb57ae . Malheureusement, je n'ai pas trouvé de moyen fiable d'obtenir la taille totale du fichier, dont vous aurez besoin pour calculer le% de progression et le temps d'achèvement estimé.
joshtch
De plus, quel type d'authentification le module de requêtes utilise-t-il pour accéder aux lecteurs Google? OAuth? Par exemple, où dans votre code ci-dessus est-il géré - requests-oauthlib.readthedocs.io/en/latest/... ?
tauseef_CuriousGuy
7
C'est génial! Voici une astuce pour drive_File_ID: https // drive.google.com / file / d / "drive_File_ID" / view - entre https ~~ file / d / et / view du lien de téléchargement.
Jaeyoung Lee
71

Vous pouvez utiliser l'outil de ligne de commande open source Linux / Unix gdrive.

Pour l'installer:

  1. Téléchargez le binaire. Choisissez par exemple celui qui correspond à votre architecturegdrive-linux-x64.

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

  1. Déterminez l'ID de fichier Google Drive. Pour cela, faites un clic droit sur le fichier souhaité dans le site Web de Google Drive et choisissez «Obtenir le lien…». Il renverra quelque chose comme https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H. Récupérez la chaîne derrière le ?id=et copiez-la dans votre presse-papiers. C'est l'ID du fichier.

  2. Téléchargez le fichier. Bien sûr, utilisez plutôt l'ID de votre fichier dans la commande suivante.

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

Lors de la première utilisation, l'outil devra obtenir des autorisations d'accès à l'API Google Drive. Pour cela, il vous montrera un lien que vous devez visiter dans un navigateur, puis vous obtiendrez un code de vérification à copier et coller dans l'outil. Le téléchargement démarre alors automatiquement. Il n'y a pas d'indicateur de progression, mais vous pouvez observer la progression dans un gestionnaire de fichiers ou un deuxième terminal.

Source: Un commentaire de Tobi sur une autre réponse ici.

 

Astuce supplémentaire: limitation de débit. Pour télécharger avec gdriveun débit maximal limité (pour ne pas submerger le réseau…), vous pouvez utiliser une commande comme celle-ci ( pvc'est PipeViewer ):

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext

Cela montrera la quantité de données téléchargées ( -b) et le taux de téléchargement ( -r) et limitera ce taux à 90 kiB / s ( -L 90k).

Tanius
la source
message d'erreur: "Limite quotidienne pour une utilisation non authentifiée dépassée. L'utilisation continue nécessite une inscription.", code: 403
Nianliang
@Nianliang Je n'ai pas encore expérimenté cela, mais voici une supposition: vous avez utilisé gdrive pour télécharger un fichier accessible au public, il ne vous demandait donc pas d'authentification lors de la première utilisation. Essayez d'abord un fichier non public, assurez-vous que l'authentification réussit (comme décrit dans la réponse: "Lors de la première utilisation,…"). Cela a-t-il aidé?
tanius
4
Impossible d'obtenir le code de vérification. Obtenez l'erreur "Connectez-vous avec Google temporairement désactivé pour cette application. Cette application n'a pas encore été vérifiée par Google pour utiliser la connexion Google."
useranon
2
Même message d'erreur ici: "Cette application n'a pas encore été vérifiée par Google pour pouvoir utiliser la connexion à Google."
gebbissimo
1
@useranon: Essayez cette solution: github.com/gdrive-org/gdrive/issues/533#issuecomment-596336395 , vous devez créer un compte de service Google et partager le fichier / dossier avec cette adresse de compte de service. Je l'ai fait. Fonctionne à partir du 17/04/2020!
whyisyoung
54
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.
Dirigez le code HTML vers grep et sed et recherchez le nom du fichier.
Obtenez le code de confirmation du fichier cookie avec awk.
Enfin, téléchargez le fichier avec le cookie activé, confirmez 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 la variable de nom de fichier, curl peut le deviner
-L Suivre les redirections
-O Nom
-distant -J Nom -en-tête-distant

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 l'ID 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 
lapinpt
la source
Très bien fait. Débarrassez-vous de l'avertissement de virus sur un fichier de 5 Go + lorsque toutes les autres réponses ont échoué.
1
C’est formidable. J'ai dû ajouter l' --insecureoption aux deux demandes curl pour que cela fonctionne.
Taylor R
@lapinpt Comment ajouter la fonctionnalité RESUME?
steven7mwesigwa
Pouvons-nous en quelque sorte nous débarrasser de l'identifiant Google si nous avons un lien public vers le fichier?
oarfish
47

Mise à jour en mars 2018.

J'ai essayé diverses techniques données dans d'autres réponses pour télécharger mon fichier (6 Go) directement du lecteur Google vers mon instance AWS ec2, mais aucune d'entre elles ne fonctionne (peut-être parce qu'elles sont anciennes).

Donc, pour l'information des autres, voici comment je l'ai fait avec succès:

  1. Cliquez avec le bouton droit sur le fichier que vous souhaitez télécharger, cliquez sur partager, sous la section de partage de lien, sélectionnez «toute personne disposant de ce lien peut modifier».
  2. Copiez le lien. Il devrait être dans ce format:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. Copiez la partie FILEIDENTIFIER à partir du lien.
  4. 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}
    
  5. Comme indiqué ci-dessus, collez le FILEIDENTIFIER dans le script. N'oubliez pas de garder les guillemets!

  6. Donnez un nom au fichier à la place de FILENAME. N'oubliez pas de conserver les guillemets et d'inclure également l'extension dans FILENAME (par exemple, myfile.zip).
  7. Maintenant, enregistrez le fichier et rendez le fichier exécutable en exécutant cette commande dans le terminal sudo chmod +x download-gdrive.sh.
  8. Exécutez le script en utilisant `./download-gdrive.sh".

PS: Voici l'essentiel de Github pour le script ci-dessus: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

Amit Chahar
la source
pour wget remplacer -cpar --save-cookieset -bpar--load-cookies
untore
4
a confirmé que cela fonctionnait pour moi 👍, édité un peu pour plus de clarté
Jeff Atwood
1
Fonctionne en janvier 2019. J'avais besoin d'ajouter des "citations ${filename}sur la dernière ligne.
Jimbo le
> Exécutez le script en utilisant ./download-gdrive.sh" Do not be like me and try to run the script by typing download-gdrive.sh , the . / `Semble être obligatoire.
Ambroise Rabier
Travailler en mai 2019
Kshitij Bajracharya
35

Voici un moyen rapide de le faire.

Assurez-vous que le lien est partagé et qu'il ressemblera à 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
thouliha
la source
2
Salut, merci pour la réponse. Si vous regardez les fichiers sur le lien que j'ai partagé, vous verrez que pendant que les fichiers sont partagés, il leur manque la balise 'authuser = 0' dans le lien. Votre méthode n'a pas fonctionné sur les fichiers fournis! Arjun
Arjun
2
Je n'ai même pas essayé avec un accès public, celui-ci fonctionnait bien pour les fichiers partagés par lien uniquement. Utilisé comme ceci:wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
Sampo Sarrala - codidact.org
Ne fonctionne pas à partir de 2018, j'obtiens la page Web d'analyse antivirus au lieu du fichier.
Calimo
10
Il contourne le scanner antivirus pour moi en 2018 lorsqu'il est utilisé avec le -rdrapeau de wget. Il en est ainsiwget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
Artem Pelenitsyn
1
Cela a fonctionné pour moi à partir du 10/2019 et était la solution parfaite pour moi pour obtenir un fichier dans un conteneur Docker en cours d'exécution sur lequel presque aucune application utilitaire ne s'exécute.
ammills01
27

Le moyen le plus simple:

(si vous en avez juste besoin pour un téléchargement unique)

  1. Accédez à la page Web Google Drive contenant le lien de téléchargement
  2. Ouvrez la console de votre navigateur et allez dans l'onglet "réseau"
  3. Cliquez sur le lien de téléchargement
  4. Attendez que le fichier commence le téléchargement et trouvez la demande correspondante (devrait être la dernière de la liste), puis vous pouvez annuler le téléchargement
  5. Faites un 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

Collez-le dans votre console, ajoutez > my-file-name.extensionà la fin (sinon il écrira le fichier dans votre console), puis appuyez sur Entrée :)


la source
Travail de juin 2019
techkuz
1
Fonctionne à partir de février 2020
Jivan
1
Dans Chrome sur un Mac, c'est: Affichage / Développeur / Outils de développement / Onglet Réseau
Dave X
Meilleur moyen. Fonctionne toujours en septembre 2020
Olivier Gérardin
Solution parfaite.
DrMorteza le
23

Le comportement par défaut de Google Drive est d'analyser les fichiers à la recherche de virus si le fichier est trop volumineux, il avertira l'utilisateur et l'informera que le fichier n'a pas pu être analysé.

Pour le moment, la seule solution de contournement que j'ai trouvée est de partager le fichier avec le Web et de créer une ressource Web.

Citation de la page d'aide de Google Drive:

Avec Drive, vous pouvez rendre les ressources Web, telles que les fichiers HTML, CSS et Javascript, visibles en tant que site Web.

Pour héberger une page Web avec Drive:

  1. Ouvrez Drive sur drive.google.com et sélectionnez un fichier.
  2. Cliquez sur le bouton Partager en haut de la page.
  3. Cliquez sur Avancé dans le coin inférieur droit de la boîte de partage.
  4. Cliquez sur Modifier ....
  5. Choisissez Activé - Public sur le Web et cliquez sur Enregistrer .
  6. Avant de fermer la boîte de partage, copiez l'ID du document à partir de l'URL dans le champ sous «Lien à partager». L'ID de document est une chaîne de lettres majuscules et minuscules et de chiffres entre des barres obliques dans l'URL.
  7. Partagez l'URL qui ressemble à "www.googledrive.com/host/[doc id] où [doc id] est remplacé par l'ID de document que vous avez copié à l'étape 6.
    Tout le monde peut désormais afficher votre page Web.

Trouvé ici: https://support.google.com/drive/answer/2881970?hl=en

Ainsi, par exemple, lorsque vous partagez un fichier sur Google Drive publiquement, le lien de partage ressemble à ceci:

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing

Ensuite, vous copiez l'identifiant du fichier et créez un lien googledrive.com qui ressemble à ceci:

https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
Alex
la source
1
@ FıratKÜÇÜK êtes-vous sûr d'avoir le bon format d'url? (notez le www.googledrive.com et non drive.google.com) J'ai juste essayé et cela a fonctionné.
Charles Forest
Mon fichier fait plus de 50 Mo. il demande une confirmation d'analyse antivirus. La solution ne convient donc pas à mon cas. Au lieu de cela, j'ai utilisé la solution d'application console "gdrive".
Fırat KÜÇÜK
@ FıratKÜÇÜK Je viens de réussir à télécharger un fichier de plus de 200 Mo avec cette méthode qui déclencherait normalement des vérifications de virus. J'ai obtenu l'ID du clic droit> "obtenir le lien partageable".
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
@Alex http 502 pour celui-là googledrive.com/host/0BwPIpgeJ2AdnUGUzVGJuak5abDg
user2284570
13
Cette fonctionnalité est obsolète et n'est plus prise en charge
Daniel G
12

Basé sur la réponse de Roshan Sethia

Mai 2018

Utilisation de WGET :

  1. Créez un script shell appelé wgetgdrive.sh comme ci-dessous:

    #!/bin/bash
    
    # Get files from Google Drive
    
    # $1 = file ID
    # $2 = file name
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    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_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
    
  2. Donnez les bonnes autorisations pour exécuter le script

  3. Dans le terminal, exécutez:

    ./wgetgdrive.sh <file ID> <filename>
    

    par exemple:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    
Aatif Khan
la source
1
Cela fonctionne comme CHARM grâce, et pour faciliter les choses:chmod 770 wgetgdrive.sh
Mohamed Kawsara
12

Sept.2020

  • Tout d'abord, extrayez l'ID de votre fichier désir à partir de Google Drive:

    1. Dans votre navigateur, accédez à drive.google.com.

    2. Cliquez avec le bouton droit sur le fichier et cliquez sur "Obtenir un lien partageable"

      Faites un clic droit pour obtenir un lien partageable

    3. Ensuite, extrayez l'ID du fichier de l'URL:

      entrez la description de l'image ici

  • Ensuite, installez le gdownmodule PyPI en utilisant pip:

    pip install gdown

  • Enfin, téléchargez le fichier en utilisant gdownet l'ID prévu:

    gdown --id <put-the-ID>


[ REMARQUE ]:

  • Dans google-colab, vous devez utiliser les commandes !avant bash.
    (ie !gdown --id 1-1wAx7b-USG0eQwIBVwVDUl3K1_1ReCt)
Benyamin Jafari
la source
8

--MIS À JOUR--

Pour télécharger le fichier, récupérez d'abord youtube-dlpour python à partir d'ici:

youtube-dl: https://rg3.github.io/youtube-dl/download.html

ou installez-le avec pip:

sudo python2.7 -m pip install --upgrade youtube_dl 
# or 
# sudo python3.6 -m pip install --upgrade youtube_dl

MISE À JOUR:

Je viens de découvrir ceci:

  1. Faites un clic droit sur le fichier que vous souhaitez télécharger à partir de drive.google.com

  2. Cliquez sur Get Sharable link

  3. Activer Link sharing on

  4. Cliquer sur Sharing settings

  5. Cliquez sur le menu déroulant supérieur pour les options

  6. Cliquez sur Plus

  7. Sélectionner [x] On - Anyone with a link

  8. Copier le lien

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)

Copiez l'identifiant après https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

Collez ceci dans la ligne de commande:

youtube-dl https://drive.google.com/open?id=

Collez l'identifiant derrière open?id=

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at  2321.53MiB/s (00:01)

J'espère que cela aide

jturi
la source
1
salut merci j'ai essayé cela et il est en téléchargement lorsque je lance à partir de l'invite de commande, mais y a-t-il un moyen d'obtenir le "lien direct" réel comme pour l'accès sur un serveur? J'essaye de l'exécuter avec node {spawn}, mais il faut ensuite le télécharger sur le serveur de nœuds, puis le télécharger à nouveau, y a-t-il un moyen d'obtenir simplement un lien de téléchargement direct à partir de Google Drive? Quel lien utilisent-ils?
bluejayke
Je dois beaucoup utiliser cette méthode maintenant donc je vais essayer de l'automatiser complètement. Obtenez simplement le lien google et un script Python fera le reste. Je pense que je vais utiliser du sélénium pour ce faire. Mettra à jour ma solution lorsqu'elle fonctionnera.
jturi
Mis à jour ma réponse. C'est maintenant aussi simple que 2 clics pour télécharger des fichiers avec youtube-dl.
jturi
8

Les réponses ci-dessus sont obsolètes pour avril 2020, car Google Drive utilise désormais une redirection vers l'emplacement réel du fichier.

Fonctionnement à partir d'avril 2020 sur macOS 10.15.4 pour les documents publics:

# this is used for drive directly downloads
function download-google(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}

# some files are shared using an indirect download
function download-google-2(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  code=$(egrep -o "confirm=(.+)&amp;id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
  curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}

# used like this
download-google <id> <name of item.extension>
danieltan95
la source
1
download-google-2travaille pour moi. Mon fichier est de taille 3G. Merci @ danieltan95
Saurabh Kumar
J'ai mis à jour download-google-2le dernier curl de cette dernière curl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;et il peut maintenant reprendre le téléchargement.
ssi-anik le
Il semble que quelque chose ne va pas avec le téléchargement à basse vitesse. une autre approche que j'ai trouvée. qr.ae/pNrPaJ
ssi-anik
download-google a bien fonctionné. pouvez-vous expliquer la différence entre les méthodes 1 et 2?
Gayal Kuruppu le
7

Aucune réponse ne propose ce qui fonctionne pour moi à partir de décembre 2016 ( source ):

curl -L https://drive.google.com/uc?id={FileID}

à condition que le fichier Google Drive ait été partagé avec les personnes disposant du lien et que {FileID}la chaîne se trouve derrière?id= dans l'URL partagée.

Bien que je n'ai pas vérifié avec des fichiers volumineux, je pense qu'il pourrait être utile de le savoir.

mmj
la source
Hmmm ... n'a pas fonctionné pour moi :( Il suffit de télécharger le contenu Web - pas le fichier
kgingeri
1
curl -L -o {filename} https://drive.google.com/uc?id={FileID}travaillé pour moi, merci!
Dário
Cela ne fonctionne pas pour moi. Mon lien est ci-dessous (toute personne disposant du lien peut consulter): drive.google.com/file/d/0B7Jh6M91b83bdFlWX2RIU2hYSWM/… . J'ai essayé: <code> curl -O -J -L drive.google.com/uc?id=0B7Jh6M91b83bdFlWX2RIU2hYSWM </code> et j'obtiens ce résultat: curl: (56) Reçu le code HTTP 403 du proxy après CONNECT
Steve
7
Fonctionne uniquement pour les fichiers jusqu'à 25 Mo, les fichiers plus volumineux donnent une page d'avertissement de scan antivirus
cen
7

Le moyen le plus simple est:

  1. Créer un lien de téléchargement et copier le fileID
  2. 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_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
maniaque
la source
1
Merci beaucoup! Incroyablement utile
Nicholas Pipitone
Je l'ai couru sur le noyau Kaggle. a fonctionné comme un charme. Remplacez simplement FILEID par l'identifiant fourni dans le lien partageable. Il ressemble à 1K4R-hrYBPFoDTcM3T677Jx0LchTN15OM.
jkr
6

J'ai eu le même problème avec Google Drive.

Voici comment j'ai résolu le problème en utilisant Links 2 .

  1. Ouvrez un navigateur sur votre PC, accédez à votre fichier dans Google Drive. Donnez à votre fichier un lien public.

  2. Copiez le lien public dans votre presse-papiers (par exemple, clic droit, Copier l'adresse du lien)

  3. Ouvrez un terminal. Si vous téléchargez sur un autre PC / serveur / machine, vous devez le SSH à ce stade

  4. Installer Links 2 (méthode debian / ubuntu, utilisez votre distribution ou l'équivalent du système d'exploitation)

    sudo apt-get install links2

  5. Collez le lien dans votre terminal et ouvrez-le avec des liens comme ceci:

    links2 "paste url here"

  6. Accédez au lien de téléchargement dans les liens à l'aide de vos touches fléchées et appuyez sur Enter

  7. Choisissez un nom de fichier et il téléchargera votre fichier

mattbell87
la source
Linksfait totalement l'affaire! Et c'est beaucoup mieux quew3m
alvas
1
C'est la seule chose qui a fonctionné pour moi! Février 2019. L'application gdown dans les commentaires précédents est hébergée par nul autre que Google Docs, il est donc impossible de la télécharger également.
Steven le
5

Utilisez youtube-dl !

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

Vous pouvez également passer --get-urlpour obtenir une URL de téléchargement direct.

Aularon
la source
1
@Ender ça marche toujours pour moi youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage. peut-être avez-vous une version obsolète de youtube-dlou le format du lien n'est pas reconnu par celui-ci pour une raison quelconque ... Essayez d'utiliser le format ci-dessus en remplaçant l'identifiant par l'identifiant de fichier de votre URL d'origine
aularon
5

Toutes les réponses ci-dessus semblent obscurcir la simplicité de la réponse ou comportent certaines nuances qui ne sont pas expliquées.

Si le fichier est partagé publiquement, vous pouvez générer un lien de téléchargement direct en connaissant simplement l'ID du fichier. L'URL doit être sous la forme " https://drive.google.com/uc?id=[FILEID Often-)&export=download" Cela fonctionne à partir du 22/11/2019. Cela ne nécessite pas que le récepteur se connecte à Google, mais nécessite que le fichier soit partagé publiquement.

  1. Dans votre navigateur, accédez à drive.google.com.

  2. Faites un clic droit sur le fichier et cliquez sur "Obtenir un lien partageable"

Faites un clic droit pour obtenir un lien partageable

  1. Ouvrez un nouvel onglet, sélectionnez la barre d'adresse et collez le contenu de votre presse-papiers qui sera le lien partageable. Vous verrez le fichier affiché par la visionneuse de Google. L'ID est le numéro juste avant le composant "Afficher" de l'URL:

entrez la description de l'image ici

  1. Modifiez l'URL afin qu'elle soit au format suivant, en remplaçant «[FILEID]» par l'ID de votre fichier partagé:

    https://drive.google.com/uc?id=[ID_FICHIER ]&export=download

  2. C'est votre lien de téléchargement direct. Si vous cliquez dessus dans votre navigateur, le fichier sera maintenant "poussé" vers votre navigateur, ouvrant la boîte de dialogue de téléchargement, vous permettant d'enregistrer ou d'ouvrir le fichier. Vous pouvez également utiliser ce lien dans vos scripts de téléchargement.

  3. Donc, la commande curl équivalente serait:

curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz
CoderBlue
la source
3
Cela ne fonctionne pas pour les gros fichiers: obtenez l'erreurGoogle 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?
Rekovni
Cela a fonctionné. Merci! Après avoir converti le lien dans ce format, vous pouvez également utiliser gdown comme indiqué dans d'autres réponses
Harry M
Cela ne télécharge qu'un fichier avec 4 Ko !!!
Benyamin Jafari le
5

J'utilise l'extrait curl de @ Amit Chahar qui a publié une bonne réponse dans ce fil. J'ai trouvé utile de le mettre dans une fonction bash plutôt que dans un .shfichier séparé

function curl_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
    rm -fr cookie
}

qui peut être inclus par exemple dans un ~/.bashrc(après l'approvisionnement bien sûr s'il n'a pas été obtenu automatiquement) et utilisé de la manière suivante

   $ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar
mher
la source
C'est probablement la meilleure réponse ... le python gdown est si lourd en comparaison. Je dois dire que je suis plutôt insatisfait de gdrive ...
smaudet
1
Vous n'avez besoin ni de -f ni de -r dans votre commande rm. Si vous apprenez aux gens à toujours "rm -rf", ils pourraient finir par supprimer les choses qu'ils veulent garder ...
Josch
oui, je suis d'accord que l'utilisation de -frest assez dangereuse
mher
4

Il existe un client multi-plateforme open source, écrit en Go: drive . C'est assez sympa et complet, et est également en développement actif.

$ 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`
Utgarda
la source
4

Je n'ai pas pu faire fonctionner le script perl de Nanoix, ou d'autres exemples de curl que j'avais vus, alors j'ai commencé à regarder dans l'API moi-même en python. Cela fonctionnait bien pour les petits fichiers, mais les gros fichiers étouffaient la RAM disponible, j'ai donc trouvé un autre code de segmentation agréable qui utilise la capacité de l'API à télécharger partiellement. Gist ici: https://gist.github.com/csik/c4c90987224150e4a0b2

Notez le bit sur le téléchargement du fichier json client_secret depuis l'interface API vers votre répertoire local.

La 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: http://stackoverflow.com/questions/27617258/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python
"""

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) 
robotique
la source
3

Voici un petit script bash que j'ai écrit qui fait le travail aujourd'hui. Il fonctionne sur des fichiers volumineux et peut également reprendre les fichiers partiellement récupérés. Il 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 ici sont qu'il fonctionne sur des fichiers volumineux et n'a besoin que des outils couramment disponibles: bash, curl, tr, grep, du, cut et mv.

#!/usr/bin/env bash
fileid="$1"
destination="$2"

# 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
Christoforo gris
la source
Bienvenue à SO. Si vous avez utilisé des références à cette fin, veuillez les inclure dans votre réponse. Bref, beau travail +1
M--
3

Cela fonctionne à partir de novembre 2017 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db

#!/bin/bash

SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
    echo "Must specify a source url"
    exit 1
fi

DEST="$2"
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: \1\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
ppetraki
la source
Bien qu'il y ait une "URL source" et qu'il y ait une analyse, je n'ai pas essayé de comprendre que cela fonctionnait simplement en utilisant directement ce qu'on appelle fileid ici et dans d'autres réponses comme premier paramètre.
janvier
@jan Cela peut signifier qu'il y a plus d'un style d'URL. Je suis content que ça marche encore pour toi.
ppetraki
3

Après avoir déconné avec ces ordures. J'ai trouvé un moyen de télécharger mon fichier doux en utilisant chrome - outils de développement.

  1. Dans l'onglet Google Docs, Ctr + Shift + J (Paramètre -> Outils de développement)
  2. Passer aux onglets Réseau
  3. Dans votre fichier de documentation, cliquez sur "Télécharger" -> Télécharger au format CSV, xlsx, ....
  4. Il vous montrera la demande dans la console "Réseau" entrez la description de l'image ici

  5. Clic droit -> Copier -> Copier comme Curl

  6. Votre commande Curl sera comme ceci, et ajouter -opour créer un fichier exporté. 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

Résolu!

Ender
la source
ce lien expire et n'est que pour 1 adresse IP à la fois
bluejayke
Vous pouvez simplement faire une demande constante silencieuse pour maintenir la session active. @bluejayke
Ender
C'est exactement ce que j'ai fait et quand je suis venu ici pour écrire une autre réponse, je suis tombé sur la vôtre. Je confirme que cela fonctionne avec différentes adresses IP car je devais télécharger un fichier de 36 Go sur le serveur qui n'a pas de navigateur. Et j'ai extrait le lien de mon ordinateur portable.
dmitry502 le
2

Voici une solution de contournement selon laquelle je suis venu télécharger des fichiers de Google Drive vers mon shell Google Cloud Linux.

  1. Partagez le fichier avec PUBLIC et avec les autorisations de modification à l'aide du partage avancé.
  2. Vous obtiendrez un lien de partage qui aurait un identifiant. Voir le lien: - drive.google.com/file/d/[ID[ID )/view?usp=sharing
  3. Copiez cet identifiant et collez-le dans le lien suivant: -

googledrive.com/host/[ID]

  1. Le lien ci-dessus serait notre lien de téléchargement.
  2. Utilisez wget pour télécharger le fichier: -

wget https://googledrive.com/host/[ID]

  1. Cette commande téléchargera le fichier avec le nom [ID] sans extension et mais avec la même taille de fichier au même endroit où vous avez exécuté la commande wget.
  2. En fait, j'ai téléchargé un dossier zippé dans mon cabinet. alors j'ai renommé ce fichier maladroit en utilisant: -

mv [ID] 1.zip

  1. puis en utilisant

décompressez 1.zip

nous obtiendrons les fichiers.

Vikas Gautam
la source
http 502 pour celui-là googledrive.com/host/0BwPIpgeJ2AdnUGUzVGJuak5abDg
user2284570
Google a supprimé l'hébergement de Drive, donc cela ne fonctionne plus.
kgingeri
2

J'ai trouvé une solution de travail à cela ... Utilisez simplement ce qui suit

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_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt
Roshan Sethia
la source
en faisant cela, j'obtiens AVERTISSEMENT: impossible de vérifier le certificat de docs.google.com, émis par `/ C = US / O = Google Trust Services / CN = Google Internet Authority G3 ': Impossible de vérifier localement l'autorité de l'émetteur. Requête HTTP envoyée, en attente de réponse ... 404 Not Found 08/02/2019 02:56:30 ERREUR 404: Not Found. des solutions de contournement?
bluejayke
HOU LA LA! Excellente réponse et très logique. Merci de l'avoir écrit. Fichier de 1,3 Go téléchargé à l'aide de cette commande ... Mode entièrement automatique à partir du terminal Linux par cette commande uniquement. Également essayé sur GCP. Fonctionne très bien là aussi. Année 2020 ... Je pense que c'est la bonne voie ... même s'ils changent un peu de commandes, cela devrait résister à l'épreuve du temps.
Atta Jutt
2

Il existe un moyen plus simple.

Installez cliget / CURLWGET à partir de l'extension firefox / chrome.

Téléchargez le fichier à partir du navigateur. Cela crée un lien curl / wget qui se souvient des cookies et des en-têtes utilisés lors du téléchargement du fichier. Utilisez cette commande depuis n'importe quel shell pour télécharger

Oui
la source
C'est sans aucun doute le moyen le plus simple et le plus simple.
c0degeas
2

le moyen facile de télécharger un fichier à partir de Google Drive, vous pouvez également télécharger un fichier sur colab

pip install gdown

import gdown

ensuite

url = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c'
output = 'spam.txt'
gdown.download(url, output, quiet=False)

ou

fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'

gdown https://drive.google.com/uc?id=+fileid

Document https://pypi.org/project/gdown/

Jadli
la source
cool. mais en quoi est-ce différent de la réponse de phi qui a été publiée plus d'un an avant la vôtre?
umläute
2

Méthode alternative, 2020

Fonctionne bien pour les serveurs sans tête. J'essayais de télécharger un fichier privé d'environ 200 Go, mais je n'ai pas réussi à faire fonctionner les autres méthodes mentionnées dans ce fil de discussion.

Solution

  1. ( Ignorez cette étape si le fichier est déjà dans votre propre lecteur Google ) Faites une copie du fichier que vous souhaitez télécharger à partir d'un dossier public / partagé dans votre compte Google Drive. Sélectionnez Fichier -> Clic droit -> Faire une copie

Démo Faire une copie

  1. Installez et configurez Rclone , un outil de ligne de commande open source, pour synchroniser les fichiers entre votre stockage local et Google Drive. Voici un tutoriel rapide pour installer et configurer rclone pour Google Drive.

  2. Copiez votre fichier de Google Drive sur votre machine à l'aide de Rclone

rclone copy mygoogledrive:path/to/file /path/to/file/on/local/machine -P

-P L'argument permet de suivre la progression du téléchargement et vous permet de savoir quand il est terminé.

SV Praveen
la source
1

Mai 2018 TRAVAIL

Salut sur la base de ces commentaires ... je crée un bash pour exporter une liste d'URL du fichier URLS.txt vers un URLS_DECODED.txt et utilisé dans un accélérateur comme flashget (j'utilise cygwin pour combiner Windows et Linux)

L'araignée de commande a été introduite pour éviter le téléchargement et obtenir le lien final (directement)

Commandez GREP HEAD et CUT, traitez et obtenez le lien final, est basé en langue espagnole, peut-être pourriez-vous être porté en LANGUE ANGLAISE

echo -e "$URL_TO_DOWNLOAD\r" probablement le \ r n'est que cywin et doit être remplacé par un \ n (ligne de rupture)

**********user*********** est le dossier utilisateur

*******Localización*********** est en langue espagnole, effacez les astérisques et laissez le mot en anglais Emplacement et adaptez LA TÊTE et les numéros CUT à l'approche appropriée.

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_]+).*/\1\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
Sk.
la source