diff --git a/Download-Large-File-from-Google-Drive.ipynb b/Download-Large-File-from-Google-Drive.ipynb index 5f7af8b..7696b60 100644 --- a/Download-Large-File-from-Google-Drive.ipynb +++ b/Download-Large-File-from-Google-Drive.ipynb @@ -49,8 +49,8 @@ }, "outputs": [], "source": [ - "file_id = '0B1fGSuBXAh1IeEpzajRISkNHckU'\n", - "destination = '/home/myusername/work/myfile.ext'\n", + "file_id = '1baaiKAk1KlTfnO3T3wI42cRwGVVBsMuF'\n", + "destination = '/home'\n", "download_file_from_google_drive(file_id, destination)" ] } diff --git a/real.py b/real.py new file mode 100644 index 0000000..fc47985 --- /dev/null +++ b/real.py @@ -0,0 +1,33 @@ +import requests + +def download_file_from_google_drive(id, destination): + 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) + +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) +file_id = '1baaiKAk1KlTfnO3T3wI42cRwGVVBsMuF' +destination = 'home' +download_file_from_google_drive(file_id, destination)