Skip to content

Instantly share code, notes, and snippets.

@fmnoise
Forked from tanaikech/submit.md
Created September 14, 2018 10:40
Show Gist options
  • Save fmnoise/3515e409f0d11be8aab2817cb897ffb2 to your computer and use it in GitHub Desktop.
Save fmnoise/3515e409f0d11be8aab2817cb897ffb2 to your computer and use it in GitHub Desktop.
Downloading Shared Files on Google Drive Using Curl

Downloading Shared Files on Google Drive Using Curl

When the shared files on Google Drive is downloaded, it is necessary to change the download method by the file size. The boundary of file size when the method is changed is about 40MB.

File size < 40MB

CURL

filename="### filename ###"
fileid="### file ID ###"
curl -L -o ${filename} "https://drive.google.com/uc?export=download&id=${fileid}"

File size > 40MB

When it tries to download the file with more than 40MB, Google says to download from following URL.

<a id="uc-download-link" class="goog-inline-block jfk-button jfk-button-action" href="/uc?export=download&amp;confirm=####&amp;id=### file ID ###">download</a>

Query included confirm=#### is important for downloading the files with large size. In order to retrieve the query from the HTML, it uses pup.

pup 'a#uc-download-link attr{href}'

And sed is used to remove amp;.

sed -e 's/amp;//g'`

So curl command is as follows.

CURL

filename="### filename ###"
fileid="### file ID ###"
query=`curl -c ./cookie.txt -s -L "https://drive.google.com/uc?export=download&id=${fileid}" | pup 'a#uc-download-link attr{href}' | sed -e 's/amp;//g'`
curl -b ./cookie.txt -L -o ${filename} "https://drive.google.com${query}"

The value of confirm is changed every time. So when the value of confirm is retrieved, the cookie is saved using -c ./cookie.txt, and when the file is downloaded, the cookie has to be read using -b ./cookie.txt.

By using this method, you can download files with the size of over 1 GB.

Reference: http://qiita.com/netwing/items/f2a595389f39206235e8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment