web-dev-qa-db-ja.com

curlまたはwgetを使用してGoogleドライブのURLをダウンロードする方法

Curlまたはwgetを使用して、公開されているGoogleドライブのURLをダウンロードする方法はありますか?たとえば、次のようなことができるようになります。

curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl

注:私はpublicly-viewableファイルでこれを行い、Googleアカウントにサインインする(または他の人にアカウントにサインインさせるなど)必要はありません。

役立つ場合、私が持っているCORSヘッダーは次のとおりです。

 "kind": "drive#file",
 "id": "1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl",
19
David542

この方法はどうですか?ファイルが非常に大きい場合、Googleはファイルをダウンロードするためのコードを返します。コードを使用してファイルをダウンロードできます。 curlを使用してこのような大きなファイルをダウンロードすると、次のようにコードを確認できます。

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

confirm=ABCDを含むクエリは、ファイルをダウンロードするために重要です。このコードはCookieにも含まれています。クッキーでは、次のように表示されます。

#HttpOnly_.drive.google.com TRUE    /uc TRUE    #####   download_warning_#####  ABCD

この場合、「ABCD」がコードです。 Cookieからコードを取得してファイルをダウンロードするには、次のスクリプトを使用できます。

サンプルスクリプト:

#!/bin/bash
fileid="### file id ###"
filename="MyFile.csv"
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}

これが役に立たない場合は、ごめんなさい。

55
Tanaike

Curlがリダイレクトに従うようにするには、-Lスイッチを使用する必要があり、ファイル名の正しいスイッチは-oです。 URLも引用する必要があります。

 curl -L -o myfile.xls "https://drive.google.com/uc?export=download&id=0B4fk8L6brI_eX1U5Ui1Lb1FpVG8"
16

最も簡単で最良の方法(実際のGoogleドライブファイルの例を使用)

  1. インストール gdown を使用してpip

    • コマンド-pip install gdown
  2. Googleドライブから cnn_stories.tgz をダウンロードしたいとしましょう

    • ダウンロードリンク:https://drive.google.com/uc?export=download&id=0BwmD_VLjROrfTHk4NFg2SndKcjQ
  3. リンクのid URLパラメーター0BwmD_VLjROrfTHk4NFg2SndKcjQに注意してください

  4. それでおしまい! gdownを使用してファイルをダウンロードします

    • gdown --id 0BwmD_VLjROrfTHk4NFg2SndKcjQ --output cnn_stories.tgz


TLDR:gdown --id {gdrive_file_id} --output {file_name}


コマンドライン引数:

--id : Google drive file ID

--output: Output File name

5
Adithya Upadhya

@tanaikeの答えを調べたところ、それは魅力のように機能します。しかし、@ Martin Broadhurstによって提案され、topicstarterによって受け入れられた解決策はそうではありません。

Googleは処理が必要なウイルススキャンに関する警告を表示するため、socスクリプトが必要です。

@tanaikeの答えに投票したいのですが、これを行うのに十分な評判がありません:)

さらに、Googleドライブ上のファイルの取得方法とIDがわからない人のために、この非常に簡単な知識を共有したいと思います。

  1. gDriveに移動
  2. それを右クリックして「共有オプション」を選択
  3. ログインが不要なリンクを持っているすべての人にパブリック共有を選択
  4. uRLをコピーします https://drive.google.com/file/d/1FNUZiDDDDDDSSSSSSAAAAAdv42Qgzb6n8d/view?usp=sharing

  5. メモ帳に貼り付けます

  6. IDはURLの一部です:1FNUZiDDDDDDSSSSSSAAAAAdv42Qgzb6n8d

楽しい!

4
Konstantyn

単に

wget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILEID' -O DESTINEATION_FILENAME

ソース

1
Amr Lotfy