我试图在脚本中从谷歌驱动器下载文件,我在这方面遇到了一些麻烦。我尝试下载的文件是here。
我已经广泛地在线查看了,我终于设法让其中一个下载了。我得到了文件的UID和较小的(1.6MB)下载,但是较大的文件(3.7GB)总是重定向到一个页面,询问我是否要在没有病毒扫描的情况下继续下载。有人可以帮助我通过那个屏幕吗?
这是我如何让第一个文件正常工作 -
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
当我在另一个文件上运行相同的文件时,
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
我注意到链接中的倒数第三行,&confirm=JwkK
是一个随机的4个字符的字符串,但建议可以在我的网址上添加确认信息。我访问过的其中一个链接建议&confirm=no_antivirus
,但这不起作用。
我希望有人可以帮忙解决这个问题!
提前致谢。
答案 0 :(得分:165)
我编写了一个Python代码段,可以从Google云端硬盘下载文件,并提供可共享链接。它有效,截至2017年8月。
剪辑不使用 gdrive ,也不使用Google Drive API。它使用requests模块。
从Google云端硬盘下载大型文件时,单个GET请求是不够的。需要第二个,这个名为 confirm 的额外URL参数,其值应等于某个cookie的值。
import requests
def download_file_from_google_drive(id, destination):
def get_confirm_token(response):
for key, value in response.cookies.items():
if key.startswith('download_warning'):
return value
return None
def save_response_content(response, destination):
CHUNK_SIZE = 32768
with open(destination, "wb") as f:
for chunk in response.iter_content(CHUNK_SIZE):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
URL = "https://docs.google.com/uc?export=download"
session = requests.Session()
response = session.get(URL, params = { 'id' : id }, stream = True)
token = get_confirm_token(response)
if token:
params = { 'id' : id, 'confirm' : token }
response = session.get(URL, params = params, stream = True)
save_response_content(response, destination)
if __name__ == "__main__":
import sys
if len(sys.argv) is not 3:
print("Usage: python google_drive.py drive_file_id destination_file_path")
else:
# TAKE ID FROM SHAREABLE LINK
file_id = sys.argv[1]
# DESTINATION FILE ON YOUR DISK
destination = sys.argv[2]
download_file_from_google_drive(file_id, destination)
答案 1 :(得分:63)
您可以使用开源Linux / Unix命令行工具gdrive
。
要安装它:
Download二进制文件。选择适合您架构的版本,例如gdrive-linux-x64
。
将其复制到您的路径。
sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
sudo chmod a+x /usr/local/bin/gdrive;
使用它:
确定Google云端硬盘文件ID。为此,右键单击Google云端硬盘网站中的所需文件,然后选择“获取链接...”。它将返回https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
之类的内容。获取?id=
后面的字符串并将其复制到剪贴板。这是文件的ID。
下载文件。当然,请在以下命令中使用您的文件ID。
gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
首次使用时,该工具需要获取对Google Drive API的访问权限。为此,它会显示一个您必须在浏览器中访问的链接,然后您将获得一个验证码,以便复制并粘贴回该工具。然后下载自动开始。没有进度指示器,但您可以在文件管理器或第二个终端中观察进度。
来源: A comment by Tobi此处有另一个答案。
其他技巧:限速。要以有限的最高费率下载gdrive
(不要淹没网络...),您可以使用这样的命令({{1} }是PipeViewer):
pv
这将显示下载的数据量(gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
pv -br -L 90k | \
cat > file.ext
)和下载速度(-b
),并将该速率限制为90 kiB / s(-r
)。
答案 2 :(得分:58)
2019年5月
pip install gdown
file_id
应该看起来像0Bz8a_Dbh9QhbNU3SGlFaDg
您可以通过右键单击该文件然后获取可共享链接来获取该文件。在开放访问文件上测试。我不确定它是否适用于目录。 在Google Colab上测试。
答案 3 :(得分:48)
看一下这个问题:Direct download from Google Drive using Google Drive API
基本上,您必须创建一个公共目录,并通过相对引用访问您的文件,例如
wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz
警告:不推荐使用此功能。请参阅以下评论中的警告。
或者,您可以使用此脚本:https://github.com/circulosmeos/gdown.pl
答案 4 :(得分:44)
curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"
它是如何工作的?
用curl获取cookie文件和html代码
将html管道输入grep和sed并搜索文件名
使用awk从cookie文件中获取确认代码
最后下载启用了cookie的文件,确认代码和文件名。
curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}"
如果你不需要文件名变量curl可以猜测它
-L遵循重定向
-O远程名称
-J Remote-header-name
echo "gURL" | egrep -o '(\w|-){26,}'
# match more than 26 word characters
要从您可以使用的URL中提取Google文件ID:
echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'
# replace non-word characters with new line,
# print only line with more than 26 word characters
OR
jQuery(document).ready(function($) {
$('.exampleimg').click(function() {
$('.about').hide(600);
if (($(window).width() > 670) && ($(this).hasClass('exampleimgopen'))) {
$(this).removeClass('exampleimgopen');
} else if ($(window).width() > 670) {
$('.exampleimg').removeClass('exampleimgopen');
$(this).addClass('exampleimgopen');
}
});
});
jQuery(document).ready(function($) {
$('.exampleimg').click(function() {
$('.about').hide(600);
if (($(window).width() < 670) && ($(this).hasClass('exampleimgopen2'))) {
$(this).removeClass('exampleimgopen2');
} else if ($(window).width() < 670) {
$('.exampleimg').removeClass('exampleimgopen2');
$(this).addClass('exampleimgopen2');
}
});
});
jQuery(document).ready(function($) {
$('.exampleimg').click(function() {
$('.about').hide(600);
if (($(window).width() < 540) && ($(this).hasClass('exampleimgopen3'))) {
$(this).removeClass('exampleimgopen3');
} else if ($(window).width() < 540) {
$('.exampleimg').removeClass('exampleimgopen3');
$(this).addClass('exampleimgopen3');
}
});
});
答案 5 :(得分:29)
截至2018年3月更新。
我尝试了其他答案中提供的各种技术,将我的文件(6 GB)直接从Google驱动器下载到我的AWS ec2实例,但它们都不起作用(可能是因为它们已经老了)。
因此,对于其他人的信息,以下是我成功的方法:
https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
将以下脚本复制到文件中。它使用curl并处理cookie以自动下载文件。
#!/bin/bash
fileid="FILEIDENTIFIER"
filename="FILENAME"
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}
如上所示,将FILEIDENTIFIER粘贴到脚本中。记得保留双引号!
myfile.zip
)。sudo chmod +x download-gdrive.sh
中运行此命令来保存文件并使文件可执行。PS:这是上面给出的脚本的Github要点:https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424
答案 6 :(得分:24)
google drive的默认行为是扫描文件中的病毒,如果文件太大,它会提示用户并通知他无法扫描文件。
目前,我找到的唯一解决方法是与网络共享文件并创建网络资源。
来自google drive帮助页面的引用:
借助云端硬盘,您可以制作网络资源(如HTML,CSS和Javascript文件) - 可以在网站上查看。
使用云端硬盘来托管网页:
- 在drive.google.com上打开云端硬盘并选择一个文件。
- 点击页面顶部的分享按钮。
- 点击共享框右下角的高级。
- 点击更改....
- 选择开启 - 在网络上公开,然后点击保存。
- 在关闭共享框之前,请在“链接到共享”下方字段中的URL中复制文档ID。文档ID是一个由大写和小写字母组成的字符串,以及URL中斜杠之间的数字。
- 分享看起来像“www.googledrive.com/host/[doc id”的网址,其中[doc id]被您在步骤6中复制的文档ID替换。
醇>
任何人都可以查看您的网页。
在此处找到:https://support.google.com/drive/answer/2881970?hl=en
因此,例如,当您在Google云端硬盘上公开共享文件时,共享链接如下所示:
https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing
然后复制文件ID并创建一个googledrive.com linke,如下所示:
https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
答案 7 :(得分:22)
首先,从Google驱动器中提取所需文件的ID:
接下来,使用gdown
安装pip
PyPI模块:
pip install gdown
最后,使用gdown
和预期的ID下载文件:
gdown --id <put-the-ID>
[注意]:
!
命令之前使用bash
。!gdown --id 1-1wAx7b-USG0eQwIBVwVDUl3K1_1ReCt
)答案 8 :(得分:17)
这是一种快速的方法。
确保链接是共享的,它看起来像这样:
https://drive.google.com/open?id=FILEID&authuser=0
然后,复制该FILEID并像这样使用它
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
答案 9 :(得分:9)
(如果您只需要一次性下载)
你应该得到类似的东西:
> my-file-name.extension
在你的控制台中过去它,将Betta <- c(1,12,23,20)
dim(Betta) <- c(2,2)
dimnames(Betta) <- list(Temperature = c("28", "25"), Flare = c("Yes", "No"))
mosaicplot(x = Betta, main = "Title")
添加到最后(否则它会将文件写入你的控制台),然后按回车:)
答案 10 :(得分:9)
根据Roshan Sethia的回答
2018年5月
使用 WGET :
创建一个名为wgetgdrive.sh的shell脚本,如下所示:
Stream
授予执行脚本的正确权限
在终端中,运行:
#!/bin/bash
# Get files from Google Drive
# $1 = file ID
# $2 = file name
URL="https://docs.google.com/uc?export=download&id=$1"
wget --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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
例如:
./wgetgdrive.sh <file ID> <filename>
答案 11 :(得分:8)
上述答案在2020年4月之前已经过时,因为Google驱动器现在使用重定向到文件的实际位置。
从2020年4月开始在macOS 10.15.4上处理公共文档:
# this is used for drive directly downloads
function download-google(){
echo "https://drive.google.com/uc?export=download&id=$1"
mkdir -p .tmp
curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}
# some files are shared using an indirect download
function download-google-2(){
echo "https://drive.google.com/uc?export=download&id=$1"
mkdir -p .tmp
curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
code=$(egrep -o "confirm=(.+)&id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}
# used like this
download-google <id> <name of item.extension>
答案 12 :(得分:6)
在 2016年12月(source)中,没有答案提出对我有用的内容:
$Script:PathStack = New-Object -TypeName 'System.Collections.Generic.Stack[System.Management.Automation.PathInfo]';
如果Google Drive文件已与拥有该链接的人共享,curl -L https://drive.google.com/uc?id={FileID}
是共享网址中{FileID}
后面的字符串。
虽然我没有查看大文件,但我相信知道它可能会有用。
答案 13 :(得分:5)
我在使用Google云端硬盘时遇到了同样的问题。
以下是我使用链接2 解决问题的方法。
在您的PC上打开浏览器,导航到Google云端硬盘中的文件。为您的文件提供公共链接。
将公共链接复制到剪贴板(例如右键单击,复制链接地址)
打开终端。如果您要下载到另一台PC /服务器/机器,则应该通过SSH连接到它
安装链接2(debian / ubuntu方法,使用你的发行版或操作系统等价物)
sudo apt-get install links2
将链接粘贴到终端并使用链接打开,如下所示:
links2 "paste url here"
使用箭头键导航至链接中的下载链接,然后按 Enter
选择文件名,然后下载文件
答案 14 :(得分:5)
-已更新-
要首先下载文件,请从此处获取youtube-dl
软件包:
youtube-dl:https://rg3.github.io/youtube-dl/download.html
或使用pip
安装它:
sudo python2.7 -m pip install --upgrade youtube_dl /// sudo python3.6 -m pip install --upgrade youtube_dl
更新:
我刚发现这个:
右键单击要从drive.google.com下载的文件
点击Get Sharable link
切换到Link sharing on
单击Sharing settings
单击顶部的下拉列表中的选项
单击更多
选择[x] On - Anyone with a link
复制链接
https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing
(This is not a real file address)
在https://drive.google.com/file/d/
之后复制ID:
3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
将其粘贴到命令行中:
youtube-dl https://drive.google.com/open?id=
将ID粘贴在open?id=
后面
youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at 2321.53MiB/s (00:01)
希望有帮助
答案 15 :(得分:4)
从Google驱动器下载文件的简便方法,也可以在colab上下载文件
pip install gdown
import gdown
然后
url = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c'
output = 'spam.txt'
gdown.download(url, output, quiet=False)
或
fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'
gdown https://drive.google.com/uc?id=+fileid
答案 16 :(得分:4)
这是一个开源的多平台客户端,用Go:drive编写。它功能齐全,功能齐全,而且还在积极开发中。
$ drive help pull
Name
pull - pulls remote changes from Google Drive
Description
Downloads content from the remote drive or modifies
local content to match that on your Google Drive
Note: You can skip checksum verification by passing in flag `-ignore-checksum`
* For usage flags: `drive pull -h`
答案 17 :(得分:4)
使用youtube-dl!
MainViewController()
您还可以传递youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890
以获得直接下载URL。
答案 18 :(得分:3)
这是我写的一个小bash脚本,今天完成了这项工作。它适用于大文件,也可以恢复部分提取的文件。它有两个参数,第一个是file_id,第二个是输出文件的名称。这里对以前的答案的主要改进是它适用于大型文件,只需要常用的工具:bash,curl,tr,grep,du,cut和mv。
#!/usr/bin/env bash
fileid="$1"
destination="$2"
# try to download the file
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`
# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
sigSize=${#bigFileSig}
if (( probeSize <= sigSize )); then
virusMessage=false
else
firstBytes=$(head -c $sigSize /tmp/probe.bin)
if [ "$firstBytes" = "$bigFileSig" ]; then
virusMessage=true
else
virusMessage=false
fi
fi
if [ "$virusMessage" = true ] ; then
confirm=$(tr ';' '\n' </tmp/probe.bin | grep confirm)
confirm=${confirm:8:4}
curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
mv /tmp/probe.bin "$destination"
fi
答案 19 :(得分:3)
此作品截至2017年11月 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db
#!/bin/bash
SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
echo "Must specify a source url"
exit 1
fi
DEST="$2"
if [ "${DEST}" == "" ]; then
echo "Must specify a destination filename"
exit 1
fi
FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)
CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')
# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)
wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST
rm -f $COOKIES
答案 20 :(得分:3)
替代方法,2020
适用于无头服务器。我试图下载一个〜200GB的私人文件,但无法使用此线程中提到的其他任何方法。
解决方案
安装和设置Rclone (一种开源命令行工具),以在本地存储和Google云端硬盘之间同步文件。 a quick tutorial到这里为Google云端硬盘安装和设置rclone。
使用Rclone将文件从Google云端硬盘复制到计算机上
rclone copy mygoogledrive:path/to/file /path/to/file/on/local/machine -P
-P
参数有助于跟踪下载进度,并在下载完成时通知您。
答案 21 :(得分:3)
最简单的方法是:
wget --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=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
答案 22 :(得分:3)
我无法让Nanoix的perl脚本工作,或者我见过的其他curl示例,所以我开始在python中查看api。这适用于小文件,但是大文件在可用的ram中窒息,所以我发现了一些其他很好的分块代码,它们使用了api的部分下载功能。请点击这里: https://gist.github.com/csik/c4c90987224150e4a0b2
请注意将client_secret json文件从API接口下载到本地目录。
的来源$ cat gdrive_dl.py
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
"""API calls to download a very large google drive file. The drive API only allows downloading to ram
(unlike, say, the Requests library's streaming option) so the files has to be partially downloaded
and chunked. Authentication requires a google api key, and a local download of client_secrets.json
Thanks to Radek for the key functions: http://stackoverflow.com/questions/27617258/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python
"""
def partial(total_byte_len, part_size_limit):
s = []
for p in range(0, total_byte_len, part_size_limit):
last = min(total_byte_len - 1, p + part_size_limit - 1)
s.append([p, last])
return s
def GD_download_file(service, file_id):
drive_file = service.files().get(fileId=file_id).execute()
download_url = drive_file.get('downloadUrl')
total_size = int(drive_file.get('fileSize'))
s = partial(total_size, 100000000) # I'm downloading BIG files, so 100M chunk size is fine for me
title = drive_file.get('title')
originalFilename = drive_file.get('originalFilename')
filename = './' + originalFilename
if download_url:
with open(filename, 'wb') as file:
print "Bytes downloaded: "
for bytes in s:
headers = {"Range" : 'bytes=%s-%s' % (bytes[0], bytes[1])}
resp, content = service._http.request(download_url, headers=headers)
if resp.status == 206 :
file.write(content)
file.flush()
else:
print 'An error occurred: %s' % resp
return None
print str(bytes[1])+"..."
return title, filename
else:
return None
gauth = GoogleAuth()
gauth.CommandLineAuth() #requires cut and paste from a browser
FILE_ID = 'SOMEID' #FileID is the simple file hash, like 0B1NzlxZ5RpdKS0NOS0x0Ym9kR0U
drive = GoogleDrive(gauth)
service = gauth.service
#file = drive.CreateFile({'id':FILE_ID}) # Use this to get file metadata
GD_download_file(service, FILE_ID)
答案 23 :(得分:2)
以下是解决方法,我将文件从Google云端硬盘下载到我的Google Cloud Linux shell。
googledrive.com/host/ [ID]
wget https://googledrive.com/host/[ID]
mv [ID] 1.zip
解压缩1.zip
我们将获取文件。
答案 24 :(得分:2)
弄乱了这个垃圾之后。我找到了一种使用chrome-开发人员工具下载我的甜蜜文件的方法。
右键单击->复制->复制为卷发
https://opendata.fcc.gov/resource/sr6c-syda.json?$where=id > 3205415&$$app_token=token
以创建导出的文件。
-o
解决了!
答案 25 :(得分:1)
我一直在使用@ Amit Chahar的curl片段,后者在此线程中发布了不错的answer。我发现它很有用
将其放入bash函数而不是单独的.sh
文件
function curl_gdrive {
GDRIVE_FILE_ID=$1
DEST_PATH=$2
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
rm -fr cookie
}
可以包含在~/.bashrc
中(如果不是自动获得,则可以自动获取)并以以下方式使用
$ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar
答案 26 :(得分:1)
我想为Windows用户添加一个简单的批处理文件解决方案,因为我只找到了Linux解决方案,花了几天的时间来学习所有有关为Windows创建解决方案的知识。因此,要从其他可能需要它的人那里保存这项工作,就在这里。
您需要的工具
wget(小的5KB exe程序,无需安装) 从这里下载。 https://eternallybored.org/misc/wget/
jrepl(小的117KB批处理文件程序,无需安装) 该工具类似于linux sed工具。 从这里下载: https://www.dostips.com/forum/viewtopic.php?t=6044
假设
%filename%-要将下载文件保存到的文件名。
%fileid%=谷歌文件ID(如前所述)
用于从Google云端硬盘下载小文件的批处理代码
wget -O "%filename%" "https://docs.google.com/uc?export=download&id=%fileid%"
用于从Google云端硬盘下载大文件的批处理代码
set cookieFile="cookie.txt"
set confirmFile="confirm.txt"
REM downlaod cooky and message with request for confirmation
wget --quiet --save-cookies "%cookieFile%" --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=%fileid%" -O "%confirmFile%"
REM extract confirmation key from message saved in confirm file and keep in variable resVar
jrepl ".*confirm=([0-9A-Za-z_]+).*" "$1" /F "%confirmFile%" /A /rtn resVar
REM when jrepl writes to variable, it adds carriage return (CR) (0x0D) and a line feed (LF) (0x0A), so remove these two last characters
set confirmKey=%resVar:~0,-2%
REM download the file using cookie and confirmation key
wget --load-cookies "%cookieFile%" -O "%filename%" "https://docs.google.com/uc?export=download&id=%fileid%&confirm=%confirmKey%"
REM clear temporary files
del %cookieFile%
del %confirmFile%
答案 27 :(得分:1)
有一种更简单的方法。
从firefox / chrome扩展名安装cliget / CURLWGET。
从浏览器下载文件。这将创建一个curl / wget链接,该链接可以记住下载文件时使用的cookie和标头。从任何外壳使用此命令进行下载
答案 28 :(得分:1)
您只需要将wget与以下项一起使用:
void makeVisible(TextMesh mesh)
{
Color zm;
zm = mesh.color;
while (zm.a <= 255)
{
zm.a += 1 * Time.deltaTime;
mesh.color = zm;
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("RoomDescriptions"))
{
//TextMesh temp;
switch (other.gameObject.name)
{
case "Bed":
makeVisible(bed);
break;
case "Paper2":
break;
case "Mar Desk":
break;
case "Table_Bottom":
break;
default:
break;
}
}
}
PD。该文件必须是公开的。
答案 29 :(得分:1)
2018年5月工作
您好基于此评论...我创建了一个bash,用于将文件 URLS.txt 中的网址列表导出到 URLS_DECODED.txt 用于像flashget这样的加速器(我使用cygwin来组合windows&amp; linux)
引入了命令蜘蛛以避免下载并获得最终链接(直接)
命令GREP HEAD和CUT,处理并获得最终链接,基于西班牙语,也许你可以移植到英语语言
echo -e "$URL_TO_DOWNLOAD\r"
可能\ r \ n只是cywin,必须替换为\ n(断行)
**********user***********
是用户文件夹
*******Localización***********
是西班牙语,清除星号,让英语中的单词定位并调整HEAD和CUT数字以适应方法。
rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do
string=$p
hash="${string#*id=}"
hash="${hash%&*}"
hash="${hash#*file/d/}"
hash="${hash%/*}"
let COUNTER=COUNTER+1
echo "Enlace "$COUNTER" id="$hash
URL_TO_DOWNLOAD=$(wget --spider --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='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
rm -rf /tmp/cookies.txt
echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt
答案 30 :(得分:1)
我找到了一个有效的解决方案...只需使用以下
wget --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=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt
答案 31 :(得分:0)
如果您更喜欢使用bash脚本,那么这对我有用: (5Gb文件,公开可用)
#!/bin/bash
if [ $# != 2 ]; then
echo "Usage: googledown.sh ID save_name"
exit 0
fi
confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id='$1 -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')
echo $confirm
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$confirm&id=$1" -O $2 && rm -rf /tmp/cookies.txt
答案 32 :(得分:0)
仅使用Google Drive API的解决方案
在运行下面的代码之前,您必须激活Google Drive API,安装依赖项并使用您的帐户进行身份验证。可以在原始的Google Drive API guide page
上找到说明spinSubKind
答案 33 :(得分:0)
以上所有回答似乎都掩盖了答案的简单性,或者有些细微之处未解释。
如果文件是公共共享的,则只需知道文件ID,即可生成直接下载链接。 URL的格式必须为“ https://drive.google.com/uc?id=[FILEID]&export=download”,此日期自2019年11月22日起生效。这不要求接收者登录google,但要求文件公开共享。
在浏览器中,导航至drive.google.com。
右键单击文件,然后单击“获取共享链接”
编辑URL,使其具有以下格式,将“ [FILEID]”替换为共享文件的ID:
这是您的直接下载链接。现在,如果在浏览器中单击它,文件将被“推送”到浏览器中,打开下载对话框,您可以保存或打开文件。您也可以在下载脚本中使用此链接。
因此等效的curl命令为:
curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz
答案 34 :(得分:0)
我使用python脚本和Google驱动器api完成了此操作, 您可以尝试以下代码段:
//using chunk download
file_id = 'someid'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
答案 35 :(得分:0)
获取共享链接并以隐身方式打开它(非常重要)。 它将说它无法扫描。
打开检查器并跟踪网络流量。 点击“仍然下载”按钮。
复制上次请求的网址。 这是您的链接。在wget中使用它。
答案 36 :(得分:0)
2018年5月
如果您想使用curl
从Google云端硬盘下载文件,除了驱动器中的文件ID外,您还需要一个适用于Google云端硬盘API的OAuth2 access_token
。获取令牌涉及Google API框架的几个步骤。 Google的注册步骤(目前)是免费的。
OAuth2 access_token可能允许各种活动,因此请小心。此外,令牌在短时间内超时(1小时?)但不足以防止滥用,如果有人抓住它。
一旦你有了access_token和fileid,这将有效:
AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext
答案 37 :(得分:0)
skicka是一个cli工具,用于从Google驱动器上传,下载访问文件。
示例 -
skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 %
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used
答案 38 :(得分:-3)
最简单的方法是在文件夹中放置您想要下载的内容。共享该文件夹,然后从URL栏中获取文件夹ID。
然后转到https://googledrive.com/host/[ID](用您的文件夹ID替换ID) 您应该看到该文件夹中所有文件的列表,单击要下载的文件。然后下载应该访问您的下载页面(Chrome上的Ctrl + J),然后您想要复制下载链接然后使用 wget“下载链接”
享受:)