我刚刚在谷歌驱动器中得到了一个包含 500mb 文件的大列表。我该如何在本地 Linux 机器上对它们进行排队下载?
我无法将它们全部压缩为大型下载
我无法将它们全部设置为一次下载
我不能整天在这里小批量下载它们。
我从像wget/curl来自谷歌驱动器的大文件这样的文档中看到,API已从谷歌驱动器中贬值,我们无法获取它们。
所以我正在寻找一种从谷歌驱动器顺序下载大文件的方法,而无需手动单击网络浏览器来执行此操作。
curl -H "Authorization: Bearer XXXXX" https://www.googleapis.com/drive/v3/files/YYYYY?alt=media -o ZZZZZ
哪里
XXXXX===> Access Token
YYYYY===> File ID
ZZZZZ===> File Name that will be saved
5.在 Linux 上测试(也应该在 Mac 上工作)。 Windows 可以尝试使用 PowerShell。
我将解释我如何解决我的问题:
使用 https://github.com/prasmussen/gdrive 按照页面上的说明进行设置。现在并没有贬值,像我原来的错觉一样。
右键单击文件。获取可共享的链接。 (
gdrive list
在这种情况下不起作用,因为它不在您的驱动器中,而是在其他人的驱动器中。可以考虑将其复制到您的存储库,并从那里获取列表。)
将所有链接粘贴到纯文本文件中,然后从所有链接的开头删除
https://drive.google.com/open?id=
。
然后您可以使用以下命令依次下载谷歌驱动器文件列表:
while read p; do ./gdrive download $p; done <files.txt
Google Drive Sync 帮我解决了这个问题。您可以安装同步并下载或同步所有文件到本地电脑。
或者
创建一个新驱动器并共享到该驱动器所需的文件,然后使用谷歌驱动器同步将此驱动器同步到本地电脑。
tl;dr 如果您想下载大文件,例如带有 ID
0B4y35FiV1wh7X2pESGlLREpxdXM
:
// check out the filename
$ curl 'https://drive.usercontent.google.com/download?id=0B4y35FiV1wh7X2pESGlLREpxdXM&export=download&confirm=t' \
| htmlq -t '.uc-warning-subcaption'
mecab-jumandic-7.0-20130310.tar.gz (29M) is too large for Google to scan for viruses. Would you still like to download this file?
// download the file
$ curl 'https://drive.usercontent.google.com/download?id=0B4y35FiV1wh7X2pESGlLREpxdXM&export=download&confirm=t' \
-o mecab-jumandic-7.0-20130310.tar.gz
假设您要下载 id 为
0B4y35FiV1wh7MWVlSDBCSXZMTXM
的文件。它足够小,这会起作用:
$ curl 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM' \
-LOJ
-L
使其遵循重定向(这里有一个重定向),-O
使其输出对文件的响应,并使用 url 中的路径的基本名称作为文件名(在本例中为 uc
) ),-J
使-O
使用服务器返回的Content-Disposition
标头中的文件名(如果返回了此类标头)。
但是使用
0B4y35FiV1wh7X2pESGlLREpxdXM
是行不通的,因为 Google 不会扫描大文件是否有病毒,而是希望您确认是否确实要下载该文件。
让我们一步一步来做:
$ curl 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7X2pESGlLREpxdXM' \
-sSw '%header{location}' -o /dev/null
https://drive.usercontent.google.com/download?id=0B4y35FiV1wh7X2pESGlLREpxdXM&export=download
-s
- 保持沉默(不显示进度表或错误消息),-S
- 使 -s
仅隐藏进度表,-w '%header{location}'
- 输出 Location
标题, -o /dev/null
- 丢弃响应正文。
$ curl 'https://drive.usercontent.google.com/download?id=0B4y35FiV1wh7X2pESGlLREpxdXM&export=download' \
-sSOJw '%header{content-disposition}'
服务器没有返回
Content-Disposition
标头,因此响应保存在 download
:
$ cat download | htmlq -t '.uc-warning-subcaption'
mecab-jumandic-7.0-20130310.tar.gz (29M) is too large for Google to scan for viruses. Would you still like to download this file?
htmlq
类为 -t
的标签的输出文本 (uc-warning-subcaption
)。
那里有一个表格:
$ cat download | htmlq -p form
<form action="https://drive.usercontent.google.com/download" id="download-form" method="get">
<input class="goog-inline-block jfk-button jfk-button-action" id="uc-download-link" type="submit" value="Download anyway">
<input name="id" type="hidden" value="0B4y35FiV1wh7X2pESGlLREpxdXM">
<input name="export" type="hidden" value="download">
<input name="confirm" type="hidden" value="t">
<input name="uuid" type="hidden" value="158cc63f-3a8a-47b3-827f-c74bcaa04d16">
</form>
htmlq
输出form
标签并对输出进行美化(-p
)。
所以它就像最后一个 url +
confirm
和 uuid
字段。并且 uuid
会随着每个请求而变化。不过好像没有必要,只需要加上confirm=t
:就可以了
$ curl 'https://drive.usercontent.google.com/download?id=0B4y35FiV1wh7X2pESGlLREpxdXM&export=download&confirm=t' \
-o mecab-jumandic-7.0-20130310.tar.gz