All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support Google Drive file URLs ending in
/previewor without a/viewor/editsuffix. (#532)
- Optional cancellation events for
download()andcached_download()interrupt stalled response reads and download waits without shortening network timeouts, raisingDownloadCancelledwhile preserving partial-file cleanup. (#525)
- An invalid
--speedvalue now reports the accepted units instead of an internal function name. (#527)
importlibis no longer exported from thegdownpackage; it was listed in__all__by accident. (#526)
- Add a
secretstorageinstallation extra for importing Chromium cookies from GNOME Keyring withpip install 'gdown[secretstorage]'oruvx --from 'gdown[secretstorage]' gdown. (#505) download(),download_folder(), andcached_download()accept a requests-styletimeout, exposed on the command line as--timeout SECONDS, so a stalled server no longer blocks forever. (#510)- Add opt-in
--retries Nand Pythonretries=Nfor automatic recovery of interrupted file and folder downloads, with bounded backoff and validated byte-range resume;--continuestill controls reuse of earlier downloads. (#517)
cached_download()verifieshashwhile streaming instead of reading the finished file back from disk. (#512)- The command line reports a hit
--timeoutas a timeout instead of asking to file an issue. (#513)
- Propagate progress callback exceptions unchanged instead of misreporting chunked-encoding errors as incomplete downloads. (#519)
- Add
--cookies-from-browser BROWSERto download as your signed-in Google account using cookies read straight from a local browser, and--cookies FILEto use a cookies file other than~/.cache/gdown/cookies.txt. The cookies file is now written owner-only and keeps session cookies. (#494)
- Continue downloading the remaining files in a folder after individual downloads fail, then report all failures together. (#495)
- Automatically detect Google Drive folder URLs, making
--foldernecessary only for ambiguous bare IDs. (#496)
- Close download sessions and streamed responses on early exits, failures, and response replacement, including single-file Listing and resumed downloads. (#499)
- Remove cached-download staging directories after success or interruption, and create the cache on demand instead of during import. (#500)
- Honor an explicitly supplied user agent for file downloads within folders while retaining the existing default user agents. (#501)
- Fix folder
--jsonexport paths and preserve export extensions for dotted Google-native filenames. (#503) - Preserve the saved cookies file when browser cookie extraction reports an error instead of replacing working session cookies with invalid decrypted values. (#504)
- Fixed downloads leaking HTTP sessions, progress bars, or output files when an exception interrupted a file or folder download. (#478)
- Reject incomplete response bodies instead of saving them as completed downloads. (#481)
- Normalized archive member paths returned by
extractall, so ZIP and tar results use native path separators consistently. (#487)
- Added
--jsonoutput for folder downloads as an array of URL and path records. (#460) - Extended
--jsonto resolve single-file URLs and filenames without downloading the file body. (#463)
- Marked
--jsonas beta and added a warning that can be suppressed with--quiet. (#465)
See the GitHub Releases page for changelogs of v6.0.0 and earlier.