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 - enter image description here

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.

137
demandé sur Chaithanya 2014-07-29 11:39:37

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

35
répondu guadafan 2018-04-29 11:11:28

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)
140
répondu turdus-merula 2017-08-08 12:51:38

vous pouvez utiliser L'outil en ligne de commande open source Linux / Unix gdrive .

pour l'installer:

  1. télécharger le binaire. choisissez celle qui s'adapte à votre architecture, par exemple gdrive-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 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.

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

51
répondu tanius 2018-03-08 20:05: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.

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 
38
répondu lapinpt 2016-08-28 13:55:50

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:

  1. Ouvrez le Lecteur à drive.google.com et sélectionnez un fichier.
  2. cliquez sur le bouton Share en haut de la page.
  3. cliquez sur avancé dans le coin inférieur droit de la boîte de partage.
  4. , Cliquez Sur Du Changement....
  5. Choisir Sur 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 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.
  7. 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
24
répondu Alex 2015-02-26 00:05:00

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
12
répondu thouliha 2015-06-11 14:38:09

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:

  1. 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".
  2. Copiez le lien. Il doit être dans ce format: https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. copie la partie FILEIDENTIFIER à partir du lien (cela ressemble à quelques caractères aléatoires).
  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 montré ci-dessus, coller le FILEIDENTIFIER dans le script. N'oubliez pas de garder les guillemets doubles.

  6. 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.)"
  7. 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.
  8. 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

12
répondu Amit Chahar 2018-03-23 08:37:33

juin 2018 La façon la plus facile qui fonctionne pour moi

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.

11
répondu phi 2018-07-04 19:23:07

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.

7
répondu mmj 2016-12-30 01:53:51

la voie de La facilité:

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

  1. allez à la page Web de Google Drive qui a le lien de téléchargement
  2. ouvrez la console de votre navigateur et allez à l'onglet "Réseau
  3. cliquez sur le lien de téléchargement
  4. 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
  5. 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 :)

7
répondu Joe 2017-06-07 05:32:02

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`
4
répondu Utgarda 2015-06-30 12:31:57

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) 
3
répondu robotic 2016-03-24 02:31:23

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
3
répondu Grey Christoforo 2017-04-18 17:26:48

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

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

  1. ouvrez un navigateur sur votre PC, naviguez vers votre fichier dans Google Drive. Donnez à votre fichier un lien public.

  2. Copiez le lien public vers votre presse-papiers (par ex. clic droit, adresse du lien de copie)

  3. ouvert a Terminal. Si vous téléchargez vers un autre PC / serveur / machine, vous devriez SSH à ce point

  4. Installer Liens 2 (debian/ubuntu méthode, l'utilisation de votre distribution ou OS équivalent)

    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. naviguer à la télécharger le lien dans les liens en utilisant vos flèches et appuyez sur Enter

  7. choisissez un nom de fichier et il téléchargez votre fichier

3
répondu mattbell87 2017-10-25 05:22:44

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
3
répondu ppetraki 2017-11-08 21:01:57

Voici une solution de contournement que je suis venu fichiers de téléchargement de Google Drive à mon shell Google Cloud Linux.

  1. partager le fichier au PUBLIC et avec les permissions D'édition en utilisant le partage avancé.
  2. vous obtiendrez un lien de partage qui aurait une ID. Voir le lien:- drive.google.com/file/d/[ID] / view?usp = partage
  3. copiez cette ID et collez-la 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é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.
  2. 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

  1. puis en utilisant

décompresser 1.zip

nous allons récupérer les fichiers.

2
répondu Vikas Gautam 2015-09-25 13:58:47

D'après la réponse de Roshan Sethia

Mai 2018

utilisant WGET :

  1. 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
    
  2. donner les bonnes permissions pour exécuter le script

  3. Dans le terminal, exécutez:

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

    par exemple:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    
2
répondu Aatif Khan 2018-05-28 21:11:41

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
1
répondu Roshan Sethia 2018-01-13 09:48:07

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
0
répondu Shubham Bhardwaj 2018-01-14 10:08:12

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
0
répondu Sk. 2018-05-05 20:26:36

la façon la plus facile est:

  1. Créer lien de téléchargement et copier 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_]+).*/\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
0
répondu maniac 2018-07-05 07:04:50

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

0
répondu Paul 2018-08-12 21:35:40

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.

0
répondu José Vallejo 2018-09-11 00:55:20

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:)

-3
répondu Rowantrek 2016-09-06 12:41:06