Dav*_*542 21 curl wget google-drive-api
有没有办法通过curl或wget下载可公开查看的Google云端硬盘网址?例如,能够执行以下操作:
curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl
Run Code Online (Sandbox Code Playgroud)
请注意,我希望在可公开查看的文件上执行此操作,而无需登录我的Google帐户(或让其他人登录其帐户等).
如果有帮助,我的cors标题是:
"kind": "drive#file",
"id": "1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl",
Run Code Online (Sandbox Code Playgroud)
Tan*_*ike 64
这个方法怎么样?当文件太大时,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>
Run Code Online (Sandbox Code Playgroud)
查询confirm=ABCD对于下载文件很重要.此代码也包含在cookie中.在cookie中,您可以看到如下.
#HttpOnly_.drive.google.com TRUE /uc TRUE ##### download_warning_##### ABCD
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"ABCD"是代码.为了从cookie中检索代码并下载文件,您可以使用以下脚本.
#!/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}
Run Code Online (Sandbox Code Playgroud)
如果这对你没用,我很抱歉.
Mar*_*rst 16
您需要使用-L开关使curl跟随重定向,并且文件名的正确开关是-o.您还应引用该网址:
curl -L -o myfile.xls "https://drive.google.com/uc?export=download&id=0B4fk8L6brI_eX1U5Ui1Lb1FpVG8"
Run Code Online (Sandbox Code Playgroud)
无需安装任何外部工具。
--output <FILENAME>)标志最简单,最好的方法(带有真实的Google云端硬盘文件示例)
使用安装gdownpip
pip install gdown假设我希望从Google云端硬盘下载cnn_stories.tgz
https://drive.google.com/uc?export=download&id=0BwmD_VLjROrfTHk4NFg2SndKcjQ请注意链接中的idURL参数0BwmD_VLjROrfTHk4NFg2SndKcjQ
而已!使用下载文件gdown
gdown --id 0BwmD_VLjROrfTHk4NFg2SndKcjQ --output cnn_stories.tgz
TLDR: gdown --id {gdrive_file_id} --output {file_name}
命令行Args:
--id : Google drive file ID
--output: Output File name
小智 6
我刚刚检查了@tanaike 的答案,它就像一个魅力。但 @Martin Broadhurst 提出并被 topicstarter 接受的解决方案却没有。
由于google显示病毒扫描警告,需要处理,需要soc脚本。
我想投票支持 @tanaike 的答案,但没有足够的声誉来做到这一点:)
另外,对于那些不知道如何获取 Google Drive 上文件的 ID 的人,我想分享这个非常简单的知识。
复制网址 https://drive.google.com/file/d/1FNUZiDDDDDDSSSSSSAAAAAdv42Qgzb6n8d/view?usp=sharing
将其粘贴到记事本中
享受!
小智 5
截至2019 年 11 月 18 日,为了使用 wget 从 Google Drive 下载文件,我使用了以下方法。对于这种方法,我们需要知道我们的文件大小是属于小猫还是大猫。我无法弄清楚区分小尺寸和大尺寸的确切数字,但我想它大约在 100 MB 左右。但是您始终可以使用为您的文件提到的两种方法中的任何一种,因为一种仅适用于小型文件,另一种适用于大型文件。
要遵循的基本步骤
步骤 1将您的文件共享为“任何有互联网的人都可以访问”。这可以通过右键单击文件 --> 单击共享选项 --> 单击高级单选按钮 --> 将访问权限更改为“在网络上公开”来完成
第 2 步保存并单击“完成” 第 3 步再次右键单击该文件,然后单击“获取可共享链接”。这会将链接复制到剪贴板。
步骤 4复制?id=之后的所有内容直到结束并将其保存到记事本文件。这是您的 FILE_ID,在下面使用。
步骤 4在执行上述常见步骤后,根据文件大小,按照以下提到的步骤进行操作。
小文件
步骤 1使用命令:
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O FILE_NAME_ALONG_WITH_SUFFIX
Run Code Online (Sandbox Code Playgroud)
FILE_ID 应从上述步骤中复制,FILE_NAME_ALONG_WITH_SUFFIX 是您希望将其保存在系统/服务器上的文件的名称。请注意,不要忘记添加后缀,如 (.zip , .txt 等)
步骤2运行命令。它可能会显示“不会应用 HSTS”作为错误,但没关系。您的文件将被复制。
大文件
步骤 1使用命令
wget --no-check-certificate --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=FILE_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILE_ID" -O FILE_NAME_ALONG_WITH_SUFFIX && rm -rf /tmp/cookies.txt
Run Code Online (Sandbox Code Playgroud)
更改 2 个位置的 FILE_ID 和 FILE_NAME_WITH_SUFFIX 一次。
步骤 2执行命令,它可能会给出与上述相同的错误,但没关系。
希望能帮助到你..