web-dev-qa-db-ja.com

googleドライブからwget/curlラージファイル

スクリプトでGoogleドライブからファイルをダウンロードしようとしていますが、少し問題があります。ダウンロードしようとしているファイルは here です。

私は広範囲にオンラインで見ました、そして、私はついにそれらのうちの1つをダウンロードさせることに成功しました。私はファイルのUIDを取得し、小さい方のファイル(1.6MB)は問題なくダウンロードできますが、大きい方のファイル(3.7GB)は常にウイルススキャンなしでダウンロードを続行するかどうかを尋ねるページにリダイレクトされます。誰かが私がそのスクリーンを乗り越えるのを手伝ってくれる?

これが私が最初のファイルを動かした方法です -

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

他のファイルでも同じように実行すると、

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

私は次のような出力を得ます - enter image description here

リンクの最後から3行目に、ランダムな4文字の文字列である&confirm=JwkKがありますが、私のURLに確認を追加する方法があることを示唆しています。私が訪れたリンクの1つが&confirm=no_antivirusを提案しましたが、それはうまくいきません。

私はここの誰かがこれを手伝ってくれることを願っています!

前もって感謝します。

188
Arjun

この質問を見てください: Google Drive APIを使用してGoogle Driveから直接ダウンロード

基本的には、パブリックディレクトリを作成し、次のようなものを使って相対参照によってファイルにアクセスする必要があります。

wget https://googledrive.com/Host/LARGEPUBLICFOLDERID/index4phlat.tar.gz

警告:この機能は廃止予定です。下記の警告を参照してください。

あるいは、このスクリプトを使用することができます: https://github.com/circulosmeos/gdown.pl

48
guadafan

共有リンク を与えて、GoogleドライブからファイルをダウンロードするPythonスニペットを書きました。動作します、 2017年8月現在

切り取られた人はgdriveもGoogle Drive APIも使用していません。 要求 モジュールを使用します。

Googleドライブから大きなファイルをダウンロードするときは、1回のGETリクエストでは不十分です。 2番目のものが必要です、そしてこれはconfirmと呼ばれる特別なURLパラメータを持っています。そして、その値はあるクッキーの値と等しいはずです。

import requests

def download_file_from_google_drive(id, 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)

    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)    


if __== "__main__":
    import sys
    if len(sys.argv) is not 3:
        print("Usage: python google_drive.py drive_file_id destination_file_path")
    else:
        # TAKE ID FROM SHAREABLE LINK
        file_id = sys.argv[1]
        # DESTINATION FILE ON YOUR DISK
        destination = sys.argv[2]
        download_file_from_google_drive(file_id, destination)
165
turdus-merula

オープンソースのLinux/Unixコマンドラインツール gdrive を使用できます。

インストールするには:

  1. ダウンロード /バイナリ。 あなたのアーキテクチャに合うもの、例えばgdrive-linux-x64を選んでください。

  2. パスにコピーしてください。

    Sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    Sudo chmod a+x /usr/local/bin/gdrive;
    

使用するには:

  1. GoogleドライブのファイルIDを確認します。 そのためには、GoogleドライブのWebサイトで目的のファイルを右クリックし、[リンクを取得]をクリックします。 https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8Hのようなものを返します。 ?id=の後ろの文字列を取得してクリップボードにコピーします。それがファイルのIDです。

  2. ファイルをダウンロードしてください。 もちろん、次のコマンドでは代わりにファイルのIDを使用してください。

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

最初の使用時に、ツールはGoogle Drive APIへのアクセス許可を取得する必要があります。そのためには、ブラウザでアクセスしなければならないリンクが表示され、それからツールにコピー&ペーストするための確認コードが表示されます。ダウンロードが自動的に始まります。進行状況インジケータはありませんが、ファイルマネージャまたは2台目の端末で進行状況を確認できます。

出典: Tobiによるコメント 別の回答はこちら。

追加のトリック:レート制限。 限られた最大速度でgdriveを使ってダウンロードするには(ネットワークを圧倒しないようにするには)、このようなコマンドを使用できます(pvPipeViewer

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext

これは、ダウンロードされたデータ量(-b)とダウンロード速度(-r)を表示し、その速度を90 kiB/s(-L 90k)に制限します。

62
tanius

2019年5月

file_idは、0Bz8a_Dbh9QhbNU3SGlFaDgのようになります。

ファイルを右クリックして 共有可能リンクを取得 をクリックすると表示されます。オープンアクセスファイルでテスト済み。私はそれがディレクトリに対して機能するかどうかわからない。 Google Colabでテスト済み。

58
phi
ggID='put_googleID_here'  
ggURL='https://drive.google.com/uc?export=download'  
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | sed 's/.*">//;s/<.a> .*//')"  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"  

それはどのように機能しますか?
curlを使ってクッキーファイルとHTMLコードを取得します。
htmlをgrepとsedにパイプしてファイル名を検索します。
awkを使ってクッキーファイルから確認コードを取得します。
最後にcookieを有効にしてファイルをダウンロードし、コードとファイル名を確認します。

curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.Zip"

あなたがファイル名変数curlを必要としない場合はそれを推測することができます
- Lリダイレクトに従う
- Oリモート名
- Jリモートヘッダ名

curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" 

URLからGoogleファイルIDを抽出するには、次のものを使用できます。

echo "gURL" | egrep -o '(\w|-){26,}'  
# match more than 26 Word characters  

OR

echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'  
# replace non-Word characters with new line,   
# print only line with more than 26 Word characters 
44
lapinpt

2018年3月現在で更新。

私は自分のファイル(6 GB)をGoogleドライブから私のAWS ec2インスタンスに直接ダウンロードするために他の答えで与えられたさまざまなテクニックを試しましたが、どれもうまくいきません(それらは古いためかもしれません)。

だから、他の人の情報のために、ここで私はそれがうまくやった方法です:

  1. ダウンロードしたいファイルを右クリックし、リンク共有セクションの下の共有をクリックして、「このリンクを持っている人なら誰でも編集できます」を選択します。
  2. リンクをコピーしてください。このフォーマットにする必要があります:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. リンクからFILEIDENTIFIER部分をコピーします。
  4. 下記のスクリプトをファイルにコピーしてください。これはcurlを使用してCookieを処理し、ファイルのダウンロードを自動化します。

    #!/bin/bash
    fileid="FILEIDENTIFIER"
    filename="FILENAME"
    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}
    
  5. 上記のように、FILEIDENTIFIERをスクリプトに貼り付けます。二重引用符を忘れないでください。

  6. FILENAMEの代わりにファイルの名前を入力します。二重引用符を忘れずにFILENAMEに拡張子を含めることを忘れないでください(たとえば、myfile.Zip)。
  7. それでは、ファイルを保存し、端末Sudo chmod +x download-gdrive.shでこのコマンドを実行してファイルを実行可能にします。
  8. `./download-gdrive.sh"を使ってスクリプトを実行してください。

シモンズ:これは上記のスクリプトのGithubの要旨です: https://Gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

29
Amit Chahar

Googleドライブのデフォルトの動作では、ファイルのサイズが大きすぎるとファイルのウイルススキャンが行われ、ユーザーにメッセージが表示され、ファイルをスキャンできなかったことが通知されます。

現時点で私が見つけた唯一の回避策はWebとファイルを共有してWebリソースを作成することです。

Googleドライブのヘルプページから引用します。

Driveを使用すると、HTML、CSS、JavascriptファイルなどのWebリソースをWebサイトとして表示できます。

DriveでWebページをホストするには:

  1. Drive.google.comでドライブを開き、ファイルを選択します。
  2. ページ上部の 共有 ボタンをクリックします。
  3. 共有ボックスの右下隅にある 詳細設定 をクリックします。
  4. クリック 変更...
  5. オン - Web上で公開 を選択し、 保存 をクリックします。
  6. 共有ボックスを閉じる前に、[共有へのリンク]の下のフィールドにあるURLからドキュメントIDをコピーします。文書IDは、URL内のスラッシュ間の大文字と小文字、および数字のストリングです。
  7. "www.googledrive.com/Host/[doc id]のようなURLを共有します。ここで、[doc id]はステップ6でコピーした文書IDに置き換えられます。
    誰でもあなたのウェブページを閲覧することができます。

ここにあります: https://support.google.com/drive/answer/2881970?hl=ja

たとえば、Googleドライブでファイルを一般公開している場合、共有リンクは次のようになります。

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing

次に、ファイルIDをコピーして、次のようなgoogledrive.comリンクを作成します。

https://www.googledrive.com/Host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
24
Alex

これを簡単に行う方法は次のとおりです。

リンクが共有されていることを確認してください。そうすれば次のようになります。

https://drive.google.com/open?id=FILEID&authuser=0

それから、そのFILEIDをコピーして次のように使用します。

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

簡単な方法:

(あなたが一回限りのダウンロードのためにそれを必要とするだけなら)

  1. ダウンロードリンクがあるGoogleドライブのウェブページにアクセスします。
  2. ブラウザのコンソールを開き、[ネットワーク]タブに進みます。
  3. ダウンロードリンクをクリック
  4. ファイルがダウンロードを開始するのを待ち、対応するリクエストを探します(リストの最後にあるはずです)。その後、ダウンロードをキャンセルできます。
  5. 要求を右クリックして[Copy as cURL](または同様のもの)をクリックします。

あなたは次のようなものになってしまうはずです。

curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed

それをあなたのコンソールに貼り付け、最後に> my-file-name.extensionを追加し(そうでなければファイルをあなたのコンソールに書き込みます)、それからenter:を押してください:)

9
user993683

Roshan Sethiaからの回答に基づく

2018年5月

_ wget _ :を使う

  1. 以下のようにwgetgdrive.shというシェルスクリプトを作成します。

    #!/bin/bash
    
    # Get files from Google Drive
    
    # $1 = file ID
    # $2 = file name
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
    
  2. スクリプトを実行するための適切な権限を与えます。

  3. ターミナルで、以下を実行します。

    ./wgetgdrive.sh <file ID> <filename>
    

    例えば:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.Zip
    
9
Aatif Khan

2016年12月source )の時点で私には何が有効なのかという答えはありません。

curl -L https://drive.google.com/uc?id={FileID}

googleドライブファイルがリンクを持つファイルと共有されており、{FileID}が共有URLの?id=の後ろの文字列である場合。

私は大きなファイルを調べませんでしたが、知っておくと便利かもしれません。

6
mmj

Googleドライブでも同じ問題がありました。

これがLinks 2を使って問題を解決する方法です。

  1. PC上でブラウザを開き、Googleドライブのファイルに移動します。ファイルに公開リンクを付けます。

  2. パブリックリンクをクリップボードにコピーします(右クリック、リンクアドレスのコピーなど)。

  3. ターミナルを開きます。別のPC /サーバー/マシンにダウンロードしている場合は、この時点でSSHで接続する必要があります。

  4. Links 2をインストールします(debian/ubuntuメソッド、あなたのディストリビューションまたはOSと同等のものを使います)

    Sudo apt-get install links2

  5. 端末にリンクを貼り付けて、「リンク」で次のように開きます。

    links2 "paste url here"

  6. 矢印キーを使用してリンク内のダウンロードリンクに移動し、を押します。 Enter

  7. ファイル名を選択するとファイルがダウンロードされます

5
mattbell87

--UPDATED--

ファイルをダウンロードするには、まずここからyoutube-dlパッケージを入手してください。

youtube-dl: https://rg3.github.io/youtube-dl/download.html

またはpipを付けてインストールします。

Sudo python2.7 -m pip install --upgrade youtube_dl /// Sudo python3.6 -m pip install --upgrade youtube_dl

更新:

私はちょうどこれを見つけました:

  1. Drive.google.comからダウンロードしたいファイルを右クリックします。

  2. Get Sharable linkをクリック

  3. Link sharing onをオンにする

  4. Sharing settingsをクリック

  5. オプションの一番上のドロップダウンをクリックしてください

  6. 詳細をクリック

  7. [x] On - Anyone with a linkを選択

  8. リンクをコピーする

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)

https://drive.google.com/file/d/の後にIDをコピーします。

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

これをコマンドラインに貼り付けます。

youtube-dl https://drive.google.com/open?id=

Idをopen?id=の後ろに貼り付けます

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at  2321.53MiB/s (00:01)

それが役に立てば幸い

5
jturi

Go: drive で書かれた、オープンソースのマルチプラットフォームクライアントがあります。それは非常に素晴らしいとフル機能であり、そしてまた活発に開発中です。

$ drive help pull
Name
        pull - pulls remote changes from Google Drive
Description
        Downloads content from the remote drive or modifies
         local content to match that on your Google Drive

Note: You can skip checksum verification by passing in flag `-ignore-checksum`

* For usage flags: `drive pull -h`
4
Utgarda

youtube-dl を使用してください。

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

直接ダウンロードURLを取得するために--get-urlを渡すこともできます。

4
aularon

最も簡単な方法は次のとおりです。

  1. リンクの作成 - ダウンロードリンク およびfileIDのコピー
  2. WGETと一緒にダウンロードする:wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
3
maniac

これが私が書いた小さなbashスクリプトです。それは大きなファイルで動作し、部分的にフェッチされたファイルも再開することができます。 2つの引数を取ります。最初の引数はfile_idで、2番目の引数は出力ファイルの名前です。ここでの以前の回答に対する主な改善点は、大きなファイルで動作し、一般的に利用可能なツール(bash、curl、tr、grep、du、cut、およびmv)のみを必要とすることです。

#!/usr/bin/env bash
fileid="$1"
destination="$2"

# try to download the file
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`

# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
sigSize=${#bigFileSig}

if (( probeSize <= sigSize )); then
  virusMessage=false
else
  firstBytes=$(head -c $sigSize /tmp/probe.bin)
  if [ "$firstBytes" = "$bigFileSig" ]; then
    virusMessage=true
  else
    virusMessage=false
  fi
fi

if [ "$virusMessage" = true ] ; then
  confirm=$(tr ';' '\n' </tmp/probe.bin | grep confirm)
  confirm=${confirm:8:4}
  curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
  mv /tmp/probe.bin "$destination"
fi
3

これは2017年11月の時点で動作します https://Gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db

#!/bin/bash

SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
    echo "Must specify a source url"
    exit 1
fi

DEST="$2"
if [ "${DEST}" == "" ]; then
    echo "Must specify a destination filename"
    exit 1
fi

FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)

CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')

# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)

wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST

rm -f $COOKIES
3
ppetraki

GoogleドライブからGoogle Cloud Linuxシェルにダウンロードファイルを作成した回避策は次のとおりです。

  1. PUBLICにファイルを共有し、高度な共有を使用して編集権限を与えます。
  2. あなたはIDを持つことになる共有リンクを得るでしょう。リンクを参照してください。 - drive.google.com/file/d/[ID]/view?usp=sharing
  3. そのIDをコピーして次のリンクに貼り付けてください -

googledrive.com/Host/ [ID]

  1. 上記のリンクは私たちのダウンロードリンクになります。
  2. ファイルをダウンロードするためにwgetを使用します。 -

wget https://googledrive.com/Host/[ID]

  1. このコマンドは、名前が[ID]のファイルを拡張子なしでダウンロードしますが、wgetコマンドを実行したのと同じ場所に同じファイルサイズでダウンロードします。
  2. 実際、私は実際にはzip形式のフォルダをダウンロードしました。だから私はその厄介なファイルの名前を変更しました: -

mv [ID] 1.Zip

  1. それから

解凍する

ファイルを入手します。

2
Vikas Gautam

このゴミをいじった後。私はchrome - developer toolsを使って私の甘いファイルをダウンロードする方法を見つけました。

  1. Googleドキュメントのタブで、Ctr + Shift + J([設定] - > [開発者ツール])をクリックします。
  2. ネットワークタブに切り替える
  3. あなたのdocsファイルで、「ダウンロード」 - > CSV、xlsx、としてダウンロード...をクリックしてください。
  4. それはあなたの "ネットワーク"コンソールにあなたの要求を表示します enter image description here

  5. 右クリック - >コピー - >カールとしてコピー

  6. あなたのCurlコマンドはこのようになるでしょう、そしてエクスポートされたファイルを作成するために-oを追加してください。 curl 'https://docs.google.com/spreadsheets/d/1Cjsryejgn29BDiInOrGZWvg/export?format=xlsx&id=1Cjsryejgn29BDiInOrGZWvg' -H 'authority: docs.google.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X..... -o server.xlsx

解決しました!

2
Ender

あなただけのwgetを使用する必要があります。

 https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download

PDファイルは公開されている必要があります。

1
José Vallejo

2018年5月WORKING

こんにちはこのコメントに基づいて...私はファイルからURLのリストをエクスポートするためのbashを作成します URLS.txt URLS_DECODED.txt flashgetのようなアクセラレータで使用される(私は使用します) cygwinはwindowsとlinuxを組み合わせる

ダウンロードを避け、最終リンクを(直接)取得するためにコマンドスパイダーが導入されました

コマンドGREP HEADとカット、最終リンクの処理と取得、スペイン語を基にした、多分あなたは英語への移植かもしれません

echo -e "$URL_TO_DOWNLOAD\r"はおそらく\ rがcywinのみであり、\ nに置き換えなければなりません(改行)

**********user***********はユーザーフォルダです

*******Localización***********はスペイン語で書かれています。アスタリスクを取り除き、Wordを英語の場所にし、THE HEADとCUT番号を適切なアプローチに適応させます。

rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do 
    string=$p
    hash="${string#*id=}"
    hash="${hash%&*}"
    hash="${hash#*file/d/}"
    hash="${hash%/*}"
    let COUNTER=COUNTER+1
    echo "Enlace "$COUNTER" id="$hash
    URL_TO_DOWNLOAD=$(wget --spider --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
    rm -rf /tmp/cookies.txt
    echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
    echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt
1
Sk.

私はこれに対する実用的な解決策を見つけました...単に以下を使ってください

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.Zip && rm -rf /tmp/cookies.txt
1
Roshan Sethia

もっと簡単な方法があります。

Firefox/chromeエクステンションからcliget/CURLWGETをインストールしてください。

ブラウザからファイルをダウンロードしてください。これは、ファイルのダウンロード中に使用されたクッキーとヘッダを記憶するcurl/wgetリンクを作成します。ダウンロードするには、任意のシェルからこのコマンドを使用します。

1
Yesh

共有リンクを取得し、シークレットで開きます(非常に重要です)。スキャンできないと言うでしょう。

インスペクタを開き、ネットワークトラフィックを追跡します。 「とにかくダウンロード」ボタンをクリックしてください。

最後のリクエストのURLをコピーします。これはあなたのリンクです。 wgetでそれを使ってください。

0
ktsour

skicka は、Googleドライブからアクセスファイルをアップロード、ダウンロードするためのcliツールです。

例 -

skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 % 
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used
0

2018年5月

Google Driveからファイルをダウンロードするためにcurlを使用する場合は、ドライブ内のファイルIDに加えて、Google Drive API用のOAuth2 access_tokenも必要です。トークンを取得するには、Google APIフレームワークに関するいくつかの手順が必要です。 Googleとの申し込み手順は(現在)無料です。

OAuth2のaccess_tokenはあらゆる種類のアクティビティを許可する可能性があるので、注意してください。また、トークンはしばらく(1時間?)経過するとタイムアウトしますが、誰かがそれを捉えた場合に悪用を防ぐのに十分なほど短くはありません。

Access_tokenとファイルIDを取得したら、これでうまくいきます。

AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext

Google Drive API - REST - ファイルのダウンロード

0
Paul

pythonスクリプトとGoogleドライブAPIを使用してこれを行いました。このスニペットを試すことができます。

//using chunk download

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)
0
aryan singh