Как загрузить URL-адрес Google Диска через curl или wget

Есть ли способ загрузить общедоступный URL-адрес Google Drive через curl или wget? Например, имея возможность сделать что-то вроде:

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

Примечание. Я хочу сделать это в общедоступном файле без необходимости подписываться в моей учетной записи Google (или иметь кого-то другого в своей учетной записи и т.д.).

Если это полезно, у меня есть заголовки cors:

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

Ответ 1

Как насчет этого метода? Когда файл имеет такой большой размер, 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. В файле cookie вы можете видеть это следующим образом.

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

В этом случае "ABCD" - это код. Чтобы извлечь код из файла cookie и загрузить файл, вы можете использовать следующий script.

Пример script:

#!/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}

Если это не было полезно для вас, извините.

Ответ 2

Вам нужно использовать переключатель -L, чтобы заставить curl следовать переадресации, и правильный переключатель для имени файла -o. Вы также должны указать URL-адрес:

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

Ответ 3

Самый простой и лучший способ (с реальным примером файла Google Диска)

  1. Установите gdown, используя pip

    • Команда - pip install gdown
  2. Допустим, я хочу загрузить cnn_stories.tgz с Google Диска

    • Ссылка для скачивания: https://drive.google.com/uc?export=download&id=0BwmD_VLjROrfTHk4NFg2SndKcjQ
  3. Обратите внимание на параметр URL id 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

Ответ 4

Я только что проверил ответ @tanaike, и это работает как шарм. Но решение, предложенное Мартином Бродхерстом и принятое по теме, не имеет значения.

Поскольку Google показывает предупреждение о проверке вирусов, которое необходимо обработать, требуется социальный script.

Я хочу проголосовать за ответ @tanaike, но не имею достаточной репутации для этого:)

Кроме того, для тех, кто не знает, как получить и идентификатор файла на Google Диске, я хотел бы поделиться этим довольно простым знанием.

Наслаждайтесь!

Ответ 5

Просто

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

источник

Ответ 6

curl gdrive.sh | bash -s 0B4fk8L6brI_eX1U5Ui1Lb1FpVG8

0B4fk8L6brI_eX1U5Ui1Lb1FpVG8 - это идентификатор файла.