Как скачать большой файл с google drive через curl в Bash? - PullRequest
3 голосов
/ 10 марта 2020

Я хочу создать очень простой bash скрипт для загрузки файлов с Google Drive через Drive API, поэтому в этом случае на диске Google есть большой файл, и я установил OAuth 2.0 Playground в моей учетной записи Google Drive, затем в В поле Select the Scope я выбираю Drive API v3 и https://www.googleapis.com/auth/drive.readonly для создания токена и ссылки.

После нажатия Authorize APIs, а затем Exchange authorization code for tokens. Я скопировал Access token, как показано ниже.

#! /bin/bash

read -p 'Enter your id : ' id
read -p 'Enter your new token : ' token
read -p 'Enter your file name : ' file

curl -H "Authorization: Bearer $token" "https://www.googleapis.com/drive/v3/files/$id?alt=media" -o "$file"

, но это не сработает, понимаете?

например, размер моего файла 12G, когда я запускаю код, который я получит это в качестве вывода и через секунду снова вернется к запросу! Я проверил это на двух компьютерах с двумя разными IP-адресами. (Я также добавляю alt=media к URL-адресу)

-bash-3.2# bash mycode.sh

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   166  100   166    0     0     80      0  0:00:02  0:00:02 --:--:--    80

-bash-3.2# 

содержимое созданного файла выглядит так:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "downloadQuotaExceeded",
    "message": "The download quota for this file has been exceeded."
   }
  ],
  "code": 403,
  "message": "The download quota for this file has been exceeded."
 }
}

Ответы [ 2 ]

1 голос
/ 10 марта 2020
  • Вы хотите загрузить файл с Google Диска, используя команду curl с токеном доступа.

Если мое понимание верно, как насчет этой модификации?

Измененная команда curl:

Пожалуйста, добавьте параметр запроса alt=media.

curl -H "Authorization: Bearer $token" "https://www.googleapis.com/drive/v3/files/$id?alt=media" -o "$file"

Примечание:

  • Эта измененная команда curl предполагает, что ваш токен доступа может использовать для загрузки файла.
  • В этой модификации могут быть загружены файлы, кроме Google Docs. Если вы хотите загрузить Документы Google, используйте метод экспорта файлов из Drive API. Ссылка

Ссылка:

Если я неправильно понял ваш вопрос и это было не то направление, которое вы хотите, я прошу прощения.

0 голосов
/ 11 марта 2020

Это известная ошибка

Об этом сообщалось в этом трекере post . Это вызвано тем, что, как вы можете прочитать в документации:

(об URL загрузки)

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

Поэтому вам следует использовать другое поле.


Чтобы просмотреть отчет, нажмите звездочку рядом к номеру проблемы, чтобы уделять больше внимания ошибке и получать обновления.


Как вы можете прочитать в комментариях к отчету, текущий обходной путь :

  • Вместо этого используйте webContentlink

или

  • Измените www.googleapis.com на content.googleapis.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...