python-3.x - 如何使用 linux 中的链接下载谷歌驱动器文件夹
问题描述
我有一个共享的谷歌驱动器文件夹链接(互联网上的任何人都可以通过此链接查看),如下所示:https ://drive.google.com/drive/folders/1i_c8LhSLf-LttV-UOMDcY4rLAalxxxx?usp=sharing
我想使用任何 wget/CURL/any python 包下载。
我已经尝试了以下方法,但它不起作用。
curl -L "https://drive.google.com/uc?id=1i_c8LhSLf-LttV-UOMDcY4rLAalkcayn&export=download" > test.tar.gz
import gdown
import time
url='https://drive.google.com/uc?id=1i_c8LhSLf-LttV-UOMDcY4rLAalkxxxx'
output='/data/test/test.zip'
time.sleep(100)
gdown.download(url, output, quiet=False)
错误:
Permission denied: https://drive.google.com/uc?id=1i_c8LhSLf-LttV-UOMDcY4rLAalkcayn
Maybe you need to change permission over 'Anyone with the link'?
以下命令适用于文件但不适用于文件夹
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=11e85AnMEGEjrxPuewlmeg-ABOZ8asdf' -O test
提前感谢您的帮助!
解决方案
使用“gdown”
gdown是一个很棒的应用程序,可以从 gdrive 下载单个文件,只需要文件 id 或链接,但是github 有几个伟大的头脑受到启发,实现了文件夹下载功能。
实际上,这个特性的状态可以在gdown:90 github PR中查看。
您可以使用它,因为它实现得几乎完美(存在一个问题,即文件夹中最多只有 50 个文件可供下载):
- 通过 pip安装具有开发
folder_download
功能的 gdown:
pip install git+https://github.com/giuliano-oliveira/gdown_folder.git
- 现在我们需要
gdown.download_folder
在 python3 shell 中运行函数(因为没有实现对文件夹下载的 cli 支持):
$ python3
import gdown
gdown.download_folder(gdrive_folder_link, quiet=True)
使用您自己gdrive_folder_link
的字符串格式'https://drive.google.com/drive/u/1/folders/{id}'
(其他未检查)。
笔记:
- 您可能需要注册 gdown 应用程序。
- 另外,请记住从文件夹中下载的最大元素是 50,因为通过 gdrive 请求 API 获取有关所有项目的相关信息存在内部问题。
- 您可能需要创建目标文件夹名称