LoginSignup
21
1

Google Drive上の公開されたファイルをダウンロードする

Last updated at Posted at 2022-02-18

2024年1月21日更新

2024年1月の段階で仕様が変更されたとのご連絡をいただきましたのでこちらも更新させていただきます。元ネタはこちらです。

現在は、下記のURLからGoogle Drive上のパブリックで共有されたファイルをダウンロードできます。この場合、一度のリクエストで大きなサイズのファイルもダウンロードが可能のようです。

https://drive.usercontent.google.com/download?id={fileId}&confirm=xxx

今のところconfirm=xxxxxxは、xでもyでもzでも動作するようです。

curlコマンドは下記のとおりです。

curl "https://drive.usercontent.google.com/download?id={fileId}&confirm=xxx" -o filename

または

curl -L "https://drive.usercontent.google.com/download?id={fileId}&confirm=xxx" -o filename

今回は、昨年末から年始にかけて2度の変更がありましたので、また変更がありましたら更新させていただきます。

概要

この投稿では、Google Drive上の公開されたファイルをダウンロードする方法について紹介させていただきます。

内容

最近、Google Drive上の公開されたファイルをダウンロードする仕様が変更されまして、それに関する問い合わせが届いていますのでので、こちらでも仕様変更後のダウンロード方法について紹介させていただきます。

Google Drive上で公開されたファイルをダウンロードする際、ファイルサイズが小さい場合(40MB以下程度と思われます)は、これまで通り、下記のようなwebContentLinkを使ってダウンロードすることができます。ここではサンプルとしてcurlコマンドを使用します。

$ curl -L "https://drive.google.com/uc?export=download&id=### fileId ###" -o sampleFilename

ところが、ファイルサイズが大きくなると、ファイルのウィルススキャン不可を承認するプロセスを通過する必要があるためにダウンロードを開始するまでに2段階のプロセスが必要になり、上記のコマンドだけではダウンロードすることができません。これまでは、ダウンロードするためのIDを最初にwebContentLinkへリクエストした際に得られるCookieから取得していました。最近この部分が変更され、下記のようにダウンロードするためのIDが返されるHTMLデータに含まれるようになっています。

<form id="downloadForm" action="https://drive.google.com/uc?export=download&amp;id={fileId}&amp;confirm={value for downloading}" method="post">

これをcurlを使ったbashスクリプトで表現すると次のようになります。

fileid="### file id ###"
filename="sampleFilename"
html=`curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}"`
curl -Lb ./cookie "https://drive.google.com/uc?export=download&`echo ${html}|grep -Po '(confirm=[a-zA-Z0-9\-_]+)'`&id=${fileid}" -o ${filename}

2回目のcurlコマンドではCookieを使用しなくてもダウンロードできますが、テストを行っていたところ、Cookieを使用する方がダウンロード速度が速いとの報告を受け、このようにしました。今の時点では上記の方法でGoogle Drive上で公開されたサイズの大きなファイルをダウンロードすることができます。これもまた今後の仕様変更でアップデートする必要があるかもしれません。

21
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
1