Как загрузить 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&confirm=ABCD&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 Диска)
Установите gdown, используя pip
- Команда -
pip install gdown
Допустим, я хочу загрузить cnn_stories.tgz с Google Диска
- Ссылка для скачивания:
https://drive.google.com/uc?export=download&id=0BwmD_VLjROrfTHk4NFg2SndKcjQ
Обратите внимание на параметр URL id
0BwmD_VLjROrfTHk4NFg2SndKcjQ
в ссылке
Это! Загрузите файл, используя 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 - это идентификатор файла.