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
This package uses CMake to configure the software. Include the
GNUInstallDirs CMake module to define CMAKE_INSTALL_<dir> macros,
and use CMAKE_INSTALL_MANDIR as the location for the installed
manpages. The correct environment variables are passed so that
${CMAKE_INSTALL_MANDIR} points into ${PKGMANDIR}.
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
- Better handling of empty %platform% in Util::filepathReplaceReservedStrings
- Fixed setting filepath for language packs
* I forgot to set the filepath for language packs which caused some problems
- Added support for caching game details
* --update-cache creates and updates the cache.
* --use-cache enables loading game details from cache.
* --cache-valid specifies how long cached game details are considered valid
- Fixed login issue
* Regex in Downloader::HTTP_Login matched wrong auth url after GOG
made some changes to website
LGOGDownloader 2.18
- Added better login check
* Allows user to login with username instead of email
* Prints some info on failed login with debug build
- Fixed login issues caused by case sensitivity
- Added PREFIX and MANPREFIX to Makefile
- Allowed unrecognized options in config file
- Added --no-cover option back
- Listing games with --list now only displays games that support the platforms specified with --platform
- Made Downloader::HTTP_Login print some more info
- File hashing changes to Util::createXML
* File hash is updated in the same loop that chunk hashes are calculated (gives the user better indication of the hashing progress)
- Avoid touching $HOME when displaying help or version (patch by: Stephen Kitt)
* This fixes main() to handle --help and --version before doing anything to the filesystem
- Fixed spelling mistake in message displayed when downloading files (patch by: Neil Ramsbottom)
- Changed --report option to allow setting the filename of report
- Old files are now renamed instead of deleted during --repair --download
- Renamed old files now contain date in filename (filename.ext.YYYYMMDDTHHMMSS.old where T is the date-time separator)
- Added support for setting subdirectories
* Allows user to specify subdirectories for games, installers, extras, patches, language packs and dlc
* You can use templates "%gamename%", "%platform%" and "%dlcname%" which are replaced by the relevant info
* New options: --subdir-installers, --subdir-extras, --subdir-patches, --subdir-language-packs, --subdir-dlc, --subdir-game
LGOGDownloader 2.17
- Made the downloader work with the new GOG layout
- The API implementation now uses boost regex if gcc/g++ version
< 4.9.0
* Fixes issues caused by incomplete std::regex support on earlier
versions
- Makefile changes by Carsten Teibes
* Add DESTDIR variable to Makefile to allow easier packaging
* Add explicit dependency to install target to ensure all needed
files have been built
- The downloader now uses remote xml data for patches
- Explicitly set the file names in Makefile for install
- Fixed language check for patches in Downloader::listGames
- Added --cover-list option to set url for cover list
* Default: https://sites.google.com/site/gogdownloader/covers.xml
easier.
LGOGDownloader 2.13
- Fixed some characters in extra filenames by url decoding the links
- Patches now use duplicate handler
- Added support for DLCs
- Fixed segfault when downloading non-dlc patches (patch by: Geoffrey Biggs)
- Fixed a login issue
- Downloader::getResponse now prints more verbose error messages
- Use secure.gog.com to get "buk" value for login form
- Check orphans regex matches the file path instead of filename
- Fixed using local xml for hashes in Downloader::downloadFile
- Use remote XML for languagepacks (patch by: Ismo Toijala)
- Only hash file if remote XML is available (patch by: Ismo Toijala)
- Added retry support to Downloader::getResponse
- Subdirectories for DLCs are created based on the DLC gamename
* gamename/dlc/dlc_gamename
- Added --wait option to set delay for http requests
- Removed language id/code from urls because GOG no longer requires it