Don't use DLC list by default
Makes getting game details much faster
Added option --use-dlc-list to enable using DLC list
Ignore SIGPIPE
Previously it was possible to receive SIGPIPE in some cases which by default causes application to terminate
Removed support for OpenSSL <= 1.0.2
Added --size-only option (Patch by: Dmitry Khalanskiy)
When looking at the existing files, completely ignore the contents if the size matches the expected one
Added basic support for filtering games using tags that the user can set on account page
Added option --list-tags to list all the tags user has assigned
Added option --tag to filter games using the tags
Fixed --download-file option not showing progress bar
Fixed getting XML data
Reduced the amount of request to cdn with --galaxy-install
Should fix the issue of getting temporarily blocked by GOG cdn when installing game with lots of small files
LGOGDownloader 3.8
* Fixed headless operation (Patch by: grepwood)
* Overwrite changelog only when modified (Patch by: Matthew Howle)
* Added retry support to --galaxy-install
* Changed some retry conditions
* Don't retry on 404 errors because they are mostly produced by
user not owning DLC for a game
* This helps a lot when using high max retry count
* Show reason for retry attempts
* Show installer and patch version when listing game details
* Fixed getting redirect URL from curl (Patch by: Timotej Lazar)
* Improved reCAPTCHA detection (Patch by: Timotej Lazar)
* Added support for new language: Thai
* Retry download also on CURLE_SSL_CONNECT_ERROR (Patch by: Ismo
Toijala))
* Use duplicate handler for extras
* Check for invalid path in GalaxyAPI::fileJsonNodeToGameFileVector
* Added directory template %gamename_firstletter%
* Useful for sorting big libraries with --subdir-game option
* Takes the first letter from %gamename%
* If %gamename% begins with a number then 0 (zero) is used instead
* Skip files that are listed by API for information purposes only
* For some games the API shows files with "count" and "total_size"
of zero meaning that they are not available to download
* These are listed on account page for information purpose only
(for example to show DLCs included in the installer)
Version 3.7
Check that product id selection was successful in Downloader::downloa…
Wait between retries if --wait option is used
Better retry condition for downloads
Fix return code for Downloader::downloadFileWithId
James Le Cuirot (1):
Fix find_path for newer jsoncpp release
Michał Janiszewski (1):
Add -latomic when required
Sude (26):
Add language: Hebrew
Galaxy: Add option to delete orphaned files
Galaxy: Automatically delete old files when updating or downgrading
GUI: Remove usage of QDesktopWidget
Suppress warnings about unused parameters
Save xml data before skipping complete file
Retry on CURLE_RECV_ERROR
Make Downloader::getRemoteFileHash use Galaxy API
Don't exit when failing to get valid game details json
CMake: Disable search for boost-cmake
Make --download-file option use Galaxy API
Remove old GOG downloader API
Remove dependency on liboauth
Check for HTTP response code 416 in Downloader::repairFile
Override global config values in Downloader::checkOrphans
Use separate thread count option for info threads
Galaxy: Add split file support to MojoSetup hack
Galaxy: Improve split file support in MojoSetup hack
Fix filenames with ampersand
Automatically select appropriate size unit for total remaining
Show HTTP response code in status message
Update README.md and man page
Version 3.6
LGOGDownloader 3.3
- Updated url for login check
- Added support for new language: Ukrainian
- Added support for new language: Spanish (Latin American)
- Added option to select platform architecture for Galaxy
* Allows selecting platform architecture with "--galaxy-arch" when "osBitness" is set for depot in API response
- Check for orphaned files after installing a game with --galaxy-install
- Preserve timestamps for downloaded files
* Get timestamps from server for all downloaded files and set the last modified date to that
* Retroactively changes timestamps for previously downloaded files that have different timestamp
* Retroactively changing timestamps doesn't work for files downloaded with --galaxy-install
- Fixed help text for --subdir-installers
- Added option to set user agent
- Expose Galaxy options as experimental options in help text
- Added option to set interval for progress bar update
- Added retry limit for failed chunk repairs
* Fixes infinite loop caused by failed chunk repair
- Get game details using Galaxy API
* Most features now use Galaxy API and should work without having valid downloader API login
* --download-file still uses the old API and will not work without valid API login
* --update-check option also uses the old API and thus requires valid API login to work properly
- Game details cache version is incremented because of changes to gameFile class
- Show product id for DLCs when using --list-details option
- Fixed serials containing <br> tags
- Fixed crash when using old version of jsoncpp and trying to get unsigned int value as string
LGOGDownloader 3.2
- Fixed crash in Website::getGames
* Sometimes JSON value for updates was null. For example when user
owns a dlc but not the base game. This caused a crash due to std::stoi
throwing std::invalid_argument exception.
- Changed --login to use GOG Galaxy login method
* Galaxy login tokens are stored to "$XDG_CONFIG_HOME/lgogdownloader/galaxy_tokens.json"
- Added initial support for some Galaxy API features
- Show product id for game when using --list-details
* Product id is used with some Galaxy related commands
LGOGDownloader 3.1
- Make libcurl usage thread-safe (Patch by: Philipp Kerling)
* libcurl internally uses signals by default, which will crash the application when using multiple threads.
* Setting CURLOPT_NOSIGNAL on all handles avoids the crashes and is recommended in the libcurl documentation.
- Made getTerminalWidth detect if it is running in a terminal before trying to get the width (Patch by: Steffan Byrne)
* Before this change, if you tried to pipe the standard out to a file or run this as a process, it would fail.
- Moved global curl init/cleanup and ssl thread setup out of the Downloader class
* Allows using libcurl calls before calling Downloader::init() which can be useful in future
- Some code restructuring
* Moved some code from Downloader::init() to constructor
* Added function API::isLoggedIn()
* Added function Downloader::isLoggedIn()
* Downloader::init() no longer calls Downloader::getGameList() it is now called from other functions when needed
- Fixed some login issues
- Limit download thread count to number of items in download queue
- Rewrote and removed lots of duplicate code from Downloader::checkStatus()
* --status now tries to get remote file hash for patches and language packs
* GOG doesn't provide xml data for extras so we still have to rely on local xml data for those
- Made --list show number of updates for games that have been updated
* Allows user to check for updated games more easily
- Replaced all printf and sprintf calls using new Util::formattedString() function
* Util::formattedString creates formatted std::string using std::snprintf
* Fixes possible buffer overflow in Downloader::printProgress() caused by sprintf call
LGOGDownloader 3.0
- Ported code to use tinyxml2 instead of tinyxml (patch by: Ferdinand Thiessen)
- Added support for new language: Bulgarian
- Added support for parallel downloads
* Use --threads to set how many parallel downloads you want to run
* If libcurl uses openssl then libcrypto is required to compile the downloader
- Added support for getting game details in parallel
- Added support for DLC language packs
- Show average download rate after download has finished
- Fixed issue with some GOG XML data files
* Some GOG XML data files contain additional nodes/elements that were not handled properly and caused issues
- Removed obsolete getpass() calls, use termios to control terminal ECHO
- Added option to set CA certificate path
* --cacert option can be used to set path to CA certificate bundle in PEM format
* CURL_CA_BUNDLE environment variable is used if it is set and CA certificate path is not set with --cacert option
- Moved cover list to git repository
* New url: https://raw.githubusercontent.com/Sude-/lgogdownloader-lists/master/covers.xml
- Use list of games that are known to have DLC and ignore DLC count that GOG provides for those games
* Fixes issues caused by GOG providing incorrect dlc count information for games with DLC
* If local list ($XDG_CONFIG_HOME/lgogdownloader/game_has_dlc.txt) exists then remote list isn't used
* --dlc-list option is used to set url for the list (default: https://raw.githubusercontent.com/Sude-/lgogdownloader-lists/master/game_has_dlc.txt)
- Made downloader work better when invoked by Gentoo's package manager (patches by: James Le Cuirot)
* Exit with non-zero status when --list or --list-details fails
* Exit with non-zero status when at least one --download-file fails
* Add --respect-umask option to prevent adjusting permissions
LGOGDownloader 2.28
- Fixed compiling with JsonCpp 1.7.1
- Moved GOG website related members of Downloader class to new Website class
* Downloader::HTTP_Login --> Website::Login
* Downloader::getGames --> Website::getGames
* Downloader::getFreeGames --> Website::getFreeGames
* Downloader::getGameDetailsJSON --> Website::getGameDetailsJSON
* Getting wishlist details was split from Downloader::showWishlist to Website::getWishlistItems function
- Moved login checks from the login function to their own functions
- Added function to check if user is logged in to GOG website
* Website::IsLoggedIn
- Changed gameFile format and gamedetails cache format
* gameFile now contains gamename and file type info
* Game details cache format has been changed to match gameFile changes
* Cache has a new "gamedetails-cache-version" field that can be used to detect cache format changes
- Fixed downloading language packs with file id
- Started using CURLOPT_XFERINFOFUNCTION instead of deprecated CURLOPT_PROGRESSFUNCTION
* libcurl >= 7.32.0 is required
LGOGDownloader 2.27
- Changed build system to CMake (patch by: Sandy Carter)
- Fixed crash after login
- Added option to set automatic XML creation in config file
* --automatic-xml-creation
- Improved game specific config options
* Directory options can be overriden in game specific config file
* "platform" and "language" options allow using string to set them. Use "+" as separator to combine values and "," as separator to set priority.
* For example: this allows setting "language" to English, German and French with "en+de+fr" which is much easier to understand than setting it to "7"
- Improvements to orphan detection (patch by: Thomas J. Moore)
* blacklist applies to installed files only; use ignorelist for orphans
* blacklisted but present items are orphans, as they should be
* use exact matching for file paths: files in wrong location are orphans
* See man page for more details on how to use ignorelist
- Apply blacklist to status checker to avoid some spurious ND messages (patch by: Thomas J. Moore)
- Use cerr for password prompts, error messages, rolling status messages, and other stuff that shouldn't clutter saved stdout. (patch by: Thomas J. Moore)
- Reduce the amount of HTTP requests
* This also slightly speeds up getting game details for games with DLC
- Added option to save changelogs when downloading
* --save-changelogs
- Added support for two-step login
LGOGDownloader 2.26
- Check that stdin is a tty before reading (patch by: Stephen Kitt)
- Added version string and number to cached game details
- Fixed priority handling for DLCs
- Combined priority handling with --platform and --language options
* Use "+" as separator to combine values and "," to set priority
* Syntax for --platform and --language options was changed: see --help or man page for details
- Added support for new language: Slovak
- Use include/exclude options to choose what files to download
* --cover, --no-cover, --no-installers, --no-extras, --no-patches, --no-language-packs and --no-dlc options have been removed
* Default: --include "all" --exclude "covers"
* See --help for available options
LGOGDownloader 2.25
- Added options to login separately to website and API
* --login-api
* --login-website
* Makes it possible to use cookies exported from browser (helps if
user gets reCAPTCHA on login form)
- Added detection of reCAPTCHA during login
- Changed path for game specific config files
* Game specific config files are now located in
$XDG_CONFIG_HOME/lgogdownloader/gamespecific/gamename.conf
- Added support for ignoring dlc count information using game
specific config file with --list option
- Removed --no-deb and --no-targz options
* GOG no longer provides deb and tarball archives
- Implemented gogdownloader:// protocol download (patch by: Sandy
Carter)
* Implements the following commands:
* lgogdownloader gogdownloader://GAME_NAME/FILE_ID
* lgogdownloader --download-file gogdownloader://GAME_NAME/FILE_ID
* lgogdownloader
gogdownloader://GAME_NAME_1/FILE_ID_1,GAME_NAME_2/FILE_ID_2,...
* lgogdownloader --download-file
gogdownloader://GAME_NAME_1/FILE_ID_1,GAME_NAME_2/FILE_ID_2,..
- Added option to specify output filename (patch by: Sandy Carter)
* Adds -o and --output-file option to specify path and downloaded
file name when using --download-file
- Removed tarball specific code from API implementation
- Fixed priority handling with duplicate values
- Added support for using strings to set language, language-priority,
platform and platform-priority instead of using numbers
- Fixed retry on operation timeout
LGOGDownloader 2.24
- Downloader::repairFile now creates new XML data on filesize
mismatches
- Added check for extras missing filenames
* Extras without filename are skipped
- Added order-only prerequisite to OBJ_RELEASE and OBJ_DEBUG in
Makefile
- Added option to ignore DLC count information
* --ignore-dlc-count option sets regular expression for games to
ignore DLC count
* Game specific option "ignore-dlc-count" can be set in
$XDG_CONFIG_HOME/lgogdownloader/gamename.conf
- Better startup time when using --game regex especially when using
generic --ignore-dlc-count='.*' (patch by: Petr BÄhan)
- Added support for Brazilian Portuguese
- Platform and language constants are now set using left shift to
make code easier to understand
- Better handling of connection issues
* Assume that we have connection error and abort/retry transfer if
download speed is less than 200 B/s for 30 seconds
- Fixed issue with incomplete files when using --status option
- JSON parsing failure in Downloader::getGames is assumed to be
caused by expired cookies and user is told to try --login
- Fixed handling large files on 32 bit platforms (patch by: Erik
Fleischer)
- The downloader now deletes old cookies before login attempt when
using --login
* Helps with some login issues
- Json::Reader::getFormattedErrorMessages is now used instead of
deprecated getFormatedErrorMessages
* jsoncpp >= 0.6.0 required
LGOGDownloader 2.23
- Option to show wishlist is no longer saved to config file
- Added simple login check as a fallback to current complex HTTP login check
* This fallback method should work even if GOG changes the site layout as long as account page location remains the same
- Fixed error with login when cookies didn't exist but API login worked because config.cfg contained valid secret and token
LGOGDownloader 2.22
- Added option to download files by using file id
* --download-file "gamename/fileid"
- Fixed multiple DLCs when using cache (patch by: Ismo Toijala)
- Made progressbar display 10 second average download speed instead of average for the whole download
- Added support for new account page layout
- Added --wishlist option to show wishlist
- Makefile change: "make install" will now install debug build if it has been built
- Make sure that file is regular file when getting local hash
- Fixed crash in Downloader::checkStatus
- Ignore extras without filename
These are usually extras that haven't been released yet so they
can't be downloaded anyway
- Changed jsoncpp include path from <jsoncpp/json/json.h> to
<json/json.h>
- Added support for saving serial keys
Serials are saved to "serials.txt" when using --save-serials with
--download and listed in the output when used with --list-details
- Show more info on HTTP error in API::getResponse when using debug
build
- Added option to skip fast platform detection
--no-platform-detection skips the initial fast platform detection
and detects the supported platforms from game details which is
slower but more accurate.
Useful in case platform identifier is missing for some games in
the game shelf.
- Fixed downloader skipping some files because of uncleared API
error state
- Show url in http error messages
LGOGDownloader 2.20
- Added priority handling of platforms and languages (patch by: Gael Le Mignot)
- Made config and cookie files only readable/writable by the owner
- Fixed using --update-cache with --use-cache
- Fixed regex alias "all" for cached details
- Made the downloader continue on API error instead of breaking off in Downloader::getGameDetails
- Made progress bar adapt to terminal width
* Progress bar gets smaller if there isn't enough space to display the full progress bar
* Progress bar isn't drawn if the terminal window is too small