Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wkentaro/gdown
Google Drive Public File Downloader when Curl/Wget Fails
https://github.com/wkentaro/gdown
curl download downloader google-drive python wget
Last synced: 7 days ago
JSON representation
Google Drive Public File Downloader when Curl/Wget Fails
- Host: GitHub
- URL: https://github.com/wkentaro/gdown
- Owner: wkentaro
- License: mit
- Created: 2015-10-17T03:01:23.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2024-08-12T16:54:10.000Z (5 months ago)
- Last Synced: 2025-01-06T19:09:31.681Z (14 days ago)
- Topics: curl, download, downloader, google-drive, python, wget
- Language: Python
- Homepage:
- Size: 1.06 MB
- Stars: 4,402
- Watchers: 24
- Forks: 356
- Open Issues: 42
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- best-of-python - GitHub - 19% open · ⏱️ 12.05.2024): (Data Loading & Extraction)
- starred - wkentaro/gdown - Google Drive Public File Downloader when Curl/Wget Fails (Python)
- awesome-list - gdown - Download a large file from Google Drive. (Data Format & I/O / For Python)
README
gdown
Google Drive Public File Downloader when Curl/Wget Fails
*Gdown* downloads a public file/folder from Google Drive.
*Gdown* provides what curl/wget doesn't for Google Drive:
- **Skip the security notice** allowing you to download large files (curl/wget fails);
- **Recursive download** of files in a folder (maximum 50 files per folder);
- **Specify download file format** for Google Slides/Sheet/Docs like PDF/XML/CSV.## Installation
```bash
pip install gdown# to upgrade
pip install --upgrade gdown
```## Usage
### via Command Line
```bash
$ gdown --help
usage: gdown [-h] [-V] [-O OUTPUT] [-q] [--fuzzy] [--id] [--proxy PROXY]
[--speed SPEED] [--no-cookies] [--no-check-certificate]
[--continue] [--folder] [--remaining-ok]
url_or_id
...$ # a large file (~500MB)
$ gdown https://drive.google.com/uc?id=1l_5RK28JRL19wpT22B-DY9We3TVXnnQQ
$ md5sum fcn8s_from_caffe.npz
256c2a8235c1c65e62e48d3284fbd384$ # same as the above but with the file ID
$ gdown 1l_5RK28JRL19wpT22B-DY9We3TVXnnQQ$ # a small file
$ gdown https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c
$ cat spam.txt
spam$ # download with fuzzy extraction of a file ID
$ gdown --fuzzy 'https://drive.google.com/file/d/0B9P1L--7Wd2vU3VUVlFnbTgtS2c/view?usp=sharing&resourcekey=0-WWs_XOSctfaY_0-sJBKRSQ'
$ cat spam.txt
spam$ # --fuzzy option also works with Microsoft Powerpoint files
$ gdown --fuzzy "https://docs.google.com/presentation/d/15umvZKlsJ3094HNg5S4vJsIhxcFlyTeK/edit?usp=sharing&ouid=117512221203072002113&rtpof=true&sd=true"$ # a folder
$ gdown https://drive.google.com/drive/folders/15uNXeRBIhVvZJIhL4yTw4IsStMhUaaxl -O /tmp/folder --folder$ # as an alternative to curl/wget
$ gdown https://httpbin.org/ip -O ip.json
$ cat ip.json
{
"origin": "126.169.213.247"
}$ # write stdout and pipe to extract
$ gdown https://github.com/wkentaro/gdown/archive/refs/tags/v4.0.0.tar.gz -O - --quiet | tar zxvf -
$ ls gdown-4.0.0/
gdown github2pypi LICENSE MANIFEST.in pyproject.toml README.md setup.cfg setup.py tests
```### via Python
```python
import gdown# a file
url = "https://drive.google.com/uc?id=1l_5RK28JRL19wpT22B-DY9We3TVXnnQQ"
output = "fcn8s_from_caffe.npz"
gdown.download(url, output)# same as the above, but with the file ID
id = "0B9P1L--7Wd2vNm9zMTJWOGxobkU"
gdown.download(id=id, output=output)# same as the above, and you can copy-and-paste a URL from Google Drive with fuzzy=True
url = "https://drive.google.com/file/d/0B9P1L--7Wd2vNm9zMTJWOGxobkU/view?usp=sharing"
gdown.download(url=url, output=output, fuzzy=True)# Cached download with identity check via MD5 (or SHA1, SHA256, etc).
# Pass postprocess function e.g., extracting compressed file.
md5 = "md5:fa837a88f0c40c513d975104edf3da17"
gdown.cached_download(url, output, hash=hash, postprocess=gdown.extractall)# a folder
url = "https://drive.google.com/drive/folders/15uNXeRBIhVvZJIhL4yTw4IsStMhUaaxl"
gdown.download_folder(url)# same as the above, but with the folder ID
id = "15uNXeRBIhVvZJIhL4yTw4IsStMhUaaxl"
gdown.download_folder(id=id)
```## FAQ
### I get a 'Permission Denied' error.
Have you made sure you set the file permission to 'Anyone with Link'?
### I set the permission 'Anyone with Link', but I still can't download.
Google restricts access to a file when the download is concentrated.
If you can still access to the file from your browser, downloading cookies file might
help. Follow this step: 1) download cookies.txt using browser extensions like
([Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc));
2) mv the `cookies.txt` to `~/.cache/gdown/cookies.txt`; 3) run download again.
If you're using `gdown>=5.0.0`, it should be able to use the cookies same as your browser.## License
MIT