615 Stimmen

Wget/curl große Datei von Google Drive herunterladen

Ich versuche, eine Datei von Google Drive in einem Skript herunterzuladen, und habe dabei ein kleines Problem. Die Dateien, die ich herunterladen möchte, sind hier.

Ich habe online intensiv nach Informationen gesucht und es schließlich geschafft, eine davon herunterzuladen. Ich habe die UIDs der Dateien bekommen und die kleinere (1,6 MB) wird ohne Probleme heruntergeladen, jedoch wird die größere Datei (3,7 GB) immer auf eine Seite umgeleitet, die mich fragt, ob ich den Download ohne Virenscan fortsetzen möchte. Kann mir jemand helfen, diese Seite zu umgehen?

So habe ich die erste Datei zum Laufen gebracht -

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

Wenn ich dasselbe mit der anderen Datei mache,

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

Bekomme ich die folgende Ausgabe - enter image description here

Ich bemerke auf der vorletzten Zeile des Links, dass ein &confirm=JwkK vorhanden ist, was eine zufällige 4-Zeichenfolge ist, aber darauf hinweist, dass es einen Weg gibt, eine Bestätigung zu meiner URL hinzuzufügen. Einer der Links, den ich besucht habe, schlug &confirm=no_antivirus vor, aber das funktioniert nicht.

0voto

ktsour Punkte 33

Holen Sie sich den Freigabelink und öffnen Sie ihn im Inkognitomodus (sehr wichtig). Es wird angezeigt, dass es nicht gescannt werden kann.

Öffnen Sie den Inspektor und verfolgen Sie den Netzwerkverkehr. Klicken Sie auf die Schaltfläche "Trotzdem herunterladen".

Kopieren Sie die URL der letzten Anfrage. Dies ist Ihr Link. Verwenden Sie ihn in wget.

0voto

Rafi Moor Punkte 76

Ich verwende dieses kleine Skript, das nur die URL kopiert, die von Google Drive stammt:

#!/bin/bash

name=`curl $1 |  grep -w \"name\" | sed 's/.*"name" content="//' | 
sed 's/".*//'`
id=`echo $1 | sed 's#.*/d/##; s#/view.*##'`
curl -L https://drive.google.com/uc?id=$id > $name
# oder
# wget -O $name https://drive.google.com/uc?id=$id

0voto

aryan singh Punkte 151

Ich habe dies mit einem Python-Skript und der Google Drive API gemacht. Sie können diesen Ausschnitt ausprobieren:

//Verwendung des Chunk-Downloads

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)

0voto

José Vallejo Punkte 346

Sie müssen einfach wget mit verwenden:

 https://drive.google.com/uc?authuser=0&id=[Ihre ID ohne Klammern]&export=download

PD. Die Datei muss öffentlich sein.

0voto

skicka ist ein CLI-Tool zum Hochladen, Herunterladen und Zugreifen auf Dateien in einem Google Drive.

Beispiel -

skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 % 
skicka: Vorbereitungszeit 1s, Synchronisationszeit 6s
skicka: 0 Drive-Dateien aktualisiert, 10 lokale Dateien
skicka: 0 B von der Festplatte gelesen, 16.18 MiB auf die Festplatte geschrieben
skicka: 0 B hochgeladen (0 B/s), 16.18 MiB heruntergeladen (2.33 MiB/s)
skicka: 50.23 MiB Spitzenarbeitsspeichernutzung

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X