web-dev-qa-db-fra.com

wget/curl gros fichier de google drive

J'essaie de télécharger un fichier à partir de Google Drive dans un script, et j'ai un peu de difficulté à le faire. Les fichiers que je tente de télécharger sont ici .

J'ai longuement cherché en ligne et j'ai finalement réussi à en télécharger un. Les UID des fichiers et le plus petit (1,6 Mo) ont été téléchargés, mais le fichier plus volumineux (3,7 Go) est toujours redirigé vers une page qui me demande si je souhaite procéder au téléchargement sans analyse antivirus. Quelqu'un pourrait-il m'aider à dé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 le même sur l'autre fichier, 

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz

Je reçois la sortie suivante -  enter image description here

Je remarque sur la dernière ligne du lien, un &confirm=JwkK qui est une chaî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 suggérait &confirm=no_antivirus mais cela ne fonctionnait pas.

J'espère que quelqu'un ici peut aider avec ça!

Merci d'avance.

162
Arjun

Regardez cette question: Téléchargement direct de 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

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

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

40
guadafan

J'ai écrit un extrait de code Python qui télécharge un fichier à partir de Google Drive, à l'aide d'un lien pouvant être partagé. Cela fonctionne, août 2017 _. 

Le snippé n’utilise pas gdrive, ni l’API de Google Drive. Il utilise le module request .

Lors du téléchargement de fichiers volumineux à partir de Google Drive, une seule requête GET ne suffit pas. Un second est nécessaire, et celui-ci a un paramètre d'URL supplémentaire appelé confirmer, dont la valeur doit être égale à la valeur d'un cookie donné.

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 __== "__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)
160
turdus-merula

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

Pour l'installer:

  1. Téléchargement le binaire. Choisissez celui qui convient à 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'identifiant du fichier Google Drive. Pour cela, cliquez avec le bouton droit de la souris sur le fichier souhaité sur le site Web de Google Drive et choisissez "Obtenir le lien ...". 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 l'identifiant du fichier.

  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 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-coller dans l'outil. Le téléchargement commence 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 du débit. Pour télécharger avec gdrive à un débit maximal limité (pour ne pas submerger le réseau…), vous pouvez utiliser une commande comme celle-ci (pv 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).

57
tanius
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 de 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 du 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 du nom de fichier, curl peut le deviner
- L Suivre les redirections
- O nom-distant
- J nom-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 
44
lapinpt

Juin 2018 Le moyen le plus simple qui fonctionne pour moi

Le file_id devrait ressembler à 0Bz8a_Dbh9QhbNU3SGlFaDg

Vous pouvez l’obtenir en cliquant avec le bouton droit de la souris sur le fichier puis sur Obtenir un lien partageable. Testé sur des fichiers à accès ouvert. Je ne suis pas sûr que cela fonctionne pour le répertoire . Testé sur Google Colab.

42
phi

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

Pour le moment, la seule solution que j'ai trouvée consiste à 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 - telles que les fichiers HTML, CSS et Javascript - visibles sous forme de 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 zone de partage. 
  4. Cliquez sur Modifier .... 
  5. Choisissez On - 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 situé sous "Lien vers le partage". L'identifiant du document est une chaîne de lettres majuscules et minuscules et de chiffres entre les barres obliques de 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 maintenant voir votre page Web. 

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

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'ID de fichier et créez un linke googledrive.com qui ressemble à ceci:

https://www.googledrive.com/Host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
24
Alex

Mise à jour à partir de mars 2018.

J'ai essayé diverses techniques données dans d'autres réponses pour télécharger mon fichier (6 Go) directement depuis Google Drive sur 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, dans la section Partage de liens, 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 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 doubles!

  6. Indiquez un nom pour le 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. Enregistrez maintenant le fichier et rendez-le 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 le Github Gist pour le script donné ci-dessus: https://Gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

20
Amit Chahar

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
15
thouliha

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 à télécharger et recherchez la demande correspondante (qui devrait être la dernière de la liste), vous pourrez alors 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

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

9
user993683

Pas de réponse me propose ce qui fonctionne pour moi à partir du décembre 2016 ( source ):

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

à condition que le fichier Google Drive ait été partagé avec ceux ayant le lien et que {FileID} est la chaîne derrière ?id= dans l'URL partagée.

Bien que je n’aie pas vérifié avec d’énormes fichiers, je pense qu’il pourrait être utile de le savoir.

7
mmj

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 utiliser SSH, à ce stade.

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

    Sudo apt-get install links2

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

    links2 "paste url here"

  6. Recherchez le lien de téléchargement dans Liens à l’aide des touches fléchées et appuyez sur Enter

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

5
mattbell87

Il existe un client multi-plateforme open source, écrit dans Go: drive . Il est plutôt agréable 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`
4
Utgarda

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 des fichiers partiellement extraits. Il faut deux arguments, le premier est le file_id et le second le nom du fichier de sortie. Les principales améliorations par rapport aux réponses précédentes sont que cela fonctionne sur des fichiers volumineux et ne nécessite 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
3
Grey Christoforo

Cela fonctionne à partir de nov 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
3
ppetraki

Basé sur la réponse de Roshan Sethia

Mai 2018

UtiliserWGET:

  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, lancez:

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

    par exemple:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.Zip
    
3
Aatif Khan

Le moyen le plus simple est:

  1. Créer télécharger le lien et copier le fichier ID 
  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
2
maniac

Voici une solution de contournement qui m'a amené à télécharger des fichiers de Google Drive sur mon Google Cloud Linux Shell.

  1. Partagez le fichier sur PUBLIC et avec les autorisations Modifier à 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]/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 portant le nom [ID] sans extension et avec la même taille de fichier au même emplacement où vous avez exécuté la commande wget.
  2. En fait, j'ai téléchargé un dossier compressé dans ma pratique. alors j'ai renommé ce fichier maladroit en utilisant: -

mv [ID] 1.Zip

  1. puis en utilisant 

décompressez 1.Zip

nous allons récupérer les fichiers.

2
Vikas Gautam

Utilisez youtube-dl !

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

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

2
aularon

Après avoir déconné avec cette poubelle. J'ai trouvé un moyen de télécharger mon fichier en utilisant les outils de développement de chrome.

  1. Dans l'onglet Google Documents, Ctr + Maj + J (Paramètres -> Outils de développement).
  2. Passer aux onglets du 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"  enter image description here 

  5. Clic droit -> Copier -> Copier comme une boucle

  6. Votre commande Curl sera comme ceci, et ajoutez -o pour 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!

2
Ender

Vous avez juste besoin d'utiliser wget avec:

 https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download

PD. Le fichier doit être public.

1
José Vallejo

J'ai trouvé une solution de travail à cela ... Il suffit d'utiliser 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
1
Roshan Sethia

Obtenez le paquet.

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

ou

Sudo python2.7 -m pip install --upgrade youtube_dl /// Sudo python3.6 -m pip install --upgrade youtube_dl

Créer un lien partagé comme mentionné ci-dessus

Link sharing on

Anyone with the link can access

  1. Copiez le lien dans une fenêtre de navigation privée: https://drive.google.com/a/hostname_here.com/file/d/kfjsdlkfjskljfkjskfjsskljfsjfklsjdf/view?usp=sharing

  2. Le lien sera remplacé par: https://drive.google.com/file/d/yuituyituiyuityuiutiuyituitiyuituiyuituyit/view

  3. Cliquez sur Télécharger

  4. Une nouvelle page va apparaître

  5. Faites un clic droit sur le lien du nom de fichier et copiez son adresse

  6. Aller au terminal

  7. Type:

youtube-dl https://drive.google.com/open?id=opopopopoppopop_nmnmnmnmnmnmnmn
[GoogleDrive] opopopopoppopop_nmnmnmnmnmnmnmn: Downloading webpage
[GoogleDrive] opopopopoppopop_nmnmnmnmnmnmnmn: Requesting source file
[download] Destination: your_file_name_here.Zip-opopopopoppopop_nmnmnmnmnmnmnmn.Zip
[download] 100% of 61.51MiB in 01:10

J'espère que ça aide

1
Jozsef Turi

Obtenez le lien partageable et ouvrez-le en incognito (très important) . Il dira qu'il ne peut pas numériser. 

Ouvrez l'inspecteur et suivez le trafic réseau . Cliquez sur le bouton "Télécharger quand même".

Copiez l'URL de la dernière requête faite ... Ceci est votre lien. Utilisez-le dans wget.

0
ktsour

skicka est un outil CLI pour télécharger, télécharger des fichiers d'accès à partir d'un lecteur 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
Shubham Bhardwaj

Mai 2018 TRAVAIL

Salut, basé sur ce commentaire ... Je crée un bash pour exporter une liste d’URL du fichier URLS.txt vers un URLS_DECODED.txt Utilisé dans certains accélérateurs comme flashget (j’utilise cygwin combiner windows et linux)

Spider de commande a été introduit pour éviter le téléchargement et obtenir le lien final (directement)

Commande GREP HEAD et CUT, traite et obtient le dernier lien. Est basé en espagnol. Peut-être pourriez-vous être portage en ANGLAIS

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 de l'utilisateur

*******Localización*********** est en langue espagnole, effacez les astérisques et laissez le mot en anglais Emplacement et adaptez THE HEAD et les numéros CUT à une 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
0
Sk.

Mai 2018

Si vous souhaitez utiliser curl pour télécharger un fichier à partir de Google Drive, vous avez également besoin d'un OAuth2 access_token pour l'API Google Drive. L'obtention du jeton implique plusieurs étapes avec la structure API Google. Les étapes d'inscription avec Google sont (actuellement) gratuites.

Un OAuth2 access_token permet potentiellement toutes sortes d'activités, alors soyez prudent avec cela. De plus, le jeton expire après un court instant (1 heure?), Mais pas assez court pour empêcher les abus si quelqu'un les capture.

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: API Google Drive - REST - Télécharger des fichiers

0
Paul

Je l'ai fait en utilisant un script python et une API de Google Drive. Vous pouvez essayer cet extrait:

//using chunk download

file_id = 'someid'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)
0
aryan singh

Il y a un moyen plus facile.

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

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

0
Yesh