Commit Graph

445 Commits

Author SHA1 Message Date
Sude
8191b9d0a3 Galaxy: Workaround for file name issue 2017-10-18 13:19:25 +03:00
Sude
3f8a8d6b68 Galaxy: Remove duplicate code
Removed duplicate code by unifying various *JsonNodeToGameFileVector functions
2017-10-18 13:13:35 +03:00
Sude
257946dbc1 Workaround for crash with older version of jsoncpp 2017-10-12 00:29:04 +03:00
Sude
b0a90f6c60 Galaxy: Use en-US locale for product info 2017-10-12 00:23:15 +03:00
Sude
eee162177f Galaxy: Fix getting file name (again)
GOG changed the url formatting in "downlink" json response again.
Check which format is in use and select proper method for the format.
2017-10-10 16:53:07 +03:00
Sude
79aa66a2d3 Galaxy: Fix getting file name
GOG changed part of the API which caused lgogdownloader to not get valid file name.
Change galaxyAPI::installerJsonNodeToGameFileVector and galaxyAPI::extraJsonNodeToGameFileVector to get proper file name.
2017-10-10 10:12:18 +03:00
Sude
6c2a3b4392 Save Galaxy tokens in destructor 2017-09-20 07:01:43 +03:00
Sude
257b6b0137 Update login check 2017-09-20 06:59:43 +03:00
Sude
edc6486637 Update login function
Downloader::login will fail if Galaxy API login is not successful.
Exporting cookies no longer works because Galaxy API login is tied to website login.
2017-09-20 06:08:45 +03:00
Sude
2d70bdfacb Galaxy: Add DLC info to game details only if DLC has any files 2017-09-15 13:06:02 +03:00
Sude
fd27b93486 Check and refresh Galaxy login before using Galaxy API handle 2017-09-15 03:11:03 +03:00
Sude
706158d595 Get game details using Galaxy API
Game details are now acquired using Galaxy API.
Allow using most features without valid downloader API login by changing Downloader::isLoggedIn to return false only if website is not logged in.
--download-file still uses old API and will not work without valid API login. Downloader::downloadFileWithId prints error message and exits if user doesn't have valid API login.
Game details cache version is incremented because of changes to gameFile class.
Show product id for DLCs when using --list-details option.
Rewrote Downloader::repair to remove duplicated code.
Fixed serials containing <br> tags.
2017-09-13 16:46:46 +03:00
Sude
6f42fec671 Reset the value for chunk retry limit
Forgot to reset the value in 709235613f
2017-09-01 08:20:05 +03:00
Sude
709235613f Add retry limit for failed chunk repairs
If repairing a chunk failed then the downloader could get stuck in infinite loop trying to repair the chunk.
This fixes the issue by adding a retry limit for failed chunk repairs.
2017-09-01 08:08:33 +03:00
Sude
8a71c63b20 Add option to set interval for progress bar update 2017-08-18 09:33:10 +03:00
Sude
35192fd725 Add option to set user agent 2017-08-01 23:59:11 +03:00
Sude
a9e61b00ba API: Unescape file paths
Some file paths returned by the API are url encoded.
Use curl_easy_unescape to url decode all file paths returned by the API.
2017-07-07 16:26:33 +03:00
Sude
6b8d5ff744 Preserve timestamps
Get timestamps from server for all downloaded files and set the last modified date to that.
Should also change timestamps for previously downloaded files when using single or multi threaded mode.
Retroactively changing timestamps doesn't work for files downloaded with --galaxy-install because Downloader::galaxyInstallGame doesn't try to download the file if it already exists and is the same file as on server.
2017-06-07 11:22:42 +03:00
Sude
672e6f8207 Galaxy: Check for orphaned files
Check and list orphaned files after download/installation with --galaxy-install is finished
2017-05-23 16:53:24 +03:00
Sude
29e5febab0 Galaxy: Support selecting platform architecture
Add option --galaxy-arch to select architecture.
Supports selecting platform architecture when "osBitness" is set for depot.
If "osBitness" is not set in API response then assume that we want to download the files from depot.
2017-05-23 16:44:27 +03:00
Sude
8f55f3aa7a Update url for login check 2017-04-28 19:21:19 +03:00
Sude
d4a6791e65 Galaxy: Add option to select language 2017-03-06 07:22:34 +02:00
Sude
8cbc62b8cd Galaxy: Fix downloading DLC files
Add product id from depot JSON to galaxyDepotItem struct

Previously downloader failed to download DLC files because DLCs have different product id than base game
Fix downloading DLC files by setting product id for each depot item
2017-03-06 06:58:11 +02:00
Sude
f5af312fd4 Add option to set login info on command line or read it from file
Add --login-email and --login-password to set login info on command line

Read login info from $XDG_CONFIG_HOME/lgogdownloader/login.txt if the file exists
login.txt must contain email on the first line and password on the second line
2017-03-06 05:46:48 +02:00
Sude
f9981c1be0 Galaxy: Add option to select platform 2017-03-05 22:47:44 +02:00
Sude
d4294b6d12 Galaxy: Use install directory from json
Use install directory value from json as subdirectory in directory specified by --directory
If install directory was not set then use product id as subdirectory
2017-03-05 22:05:08 +02:00
Sude
d2249ffdc5 Build Galaxy download url according to format specified in json 2017-03-05 21:52:05 +02:00
Sude
602cac8b4c Add resume support to Downloader::galaxyInstallGame 2017-03-04 23:52:29 +02:00
Sude
d6d3d3a40e Fix some issues with GalaxyConfig
Fix compile error: "conversion from ‘time_t {aka long int}’ to ‘const Json::Value’ is ambiguous"
Add checks for missing "expires_in" value in Galaxy tokens json
2017-02-27 22:24:56 +02:00
Sude
f2e8dde934 Some initial Galaxy code
Add some code for initial Galaxy support.
Rewrite and move code around in preparation for GOG Galaxy API support.
2017-02-17 11:14:28 +02:00
Sude
22f47de4fc Fix crash in Website::getGames
JSON value for updates can be null in some cases. 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
2017-01-20 00:15:50 +02:00
Sude
b9bb37b36a Make --list show number of updates for games that have been updated
Allows user to check for updated games more easily
2017-01-11 19:22:38 +02:00
Sude
6d6a676e0a Add function Util::formattedString
Replace all "printf" and "sprintf" calls using Util::formattedString
2017-01-11 15:57:26 +02:00
Sude
e045612ab8 Rewrite Downloader::checkStatus
Added type for DLCs to gameFile (GFTYPE_DLC)
Added gameDetails::getGameFileVector function
Simplified Downloader::checkStatus code by removing duplicate code
Downloader::checkStatus now also tries to get remote file hash for patches and language packs
2016-12-20 22:29:56 +02:00
Sude
9f214d9652 Limit download thread count to number of items in download queue 2016-12-18 18:25:24 +02:00
Sude
dea82b7991 Some code restructuring
- Move some code from Downloader::init() to constructor
- Add function API::isLoggedIn()
- Add function Downloader::isLoggedIn()
- Don't call Downloader::getGameList() from Downloader::init(). Call it from other functions if/when needed

Also fix some login issues
2016-12-17 21:01:44 +02:00
Sude
f93c8ee753 Merge branch 'detectTerminal' of https://github.com/chanceVermilion/lgogdownloader 2016-12-11 14:45:38 +02:00
Philipp Kerling
08a6ee300a Make libcurl usage thread-safe
libcurl internally uses signals by default, whcih will crash the
application when using multiple threads.
Setting CURLOPT_NOSIGNAL on all handles avoids the crashes and is
recommended in the libcurl documentation.

See:
https://curl.haxx.se/libcurl/c/threadsafe.html
https://curl.haxx.se/libcurl/c/CURLOPT_NOSIGNAL.html
2016-12-11 13:10:12 +01:00
Steffan Byrne
5822bce376 Made getTerminalWidth detect if it is running in a terminal before trying to get the width. 2016-12-02 21:26:37 -05:00
Sude
c635cdabe8 Fix for extra characters in progress text in Website::getGames
If we print shorter progress text than we printed earlier then characters from the earlier string would remain on the terminal because the line was not cleared.
Clear the line before printing to avoid the extra characters.
2016-11-15 19:50:00 +02:00
Sude
9842c070e4 Multithreaded getGameDetails
Get game details using multiple threads
2016-11-15 19:30:32 +02:00
Sude
34e3af3438 Ignore DLC count information for specific games
Ignore DLC count information for specific games by using a list of games that we know have DLC.
GOG reports wrong DLC count information for many games. By using a list of games that we know have DLC we can ignore DLC count info that GOG provides for those games.
User can use local list ($XDG_CONFIG_HOME/lgogdownloader/game_has_dlc.txt) or use remote list by using the new "--dlc-list" option.
The list uses same format as blacklist.
2016-11-05 14:51:52 +02:00
Sude
0b3a6643c6 Proper fix for skipped file downloads due to race condition
Properly fixes the skipped file downloads due to race condition caused by trying create same directory from multiple threads at the same time.
4c480465b3 fixed the issue by having additional check to see if the directory exists after boost::filesystem::create_directories() returned false.
This fix uses mutex to make sure only one thread at a time can check if the directory exists and create it
2016-11-04 09:52:35 +02:00
Sude
4c480465b3 Fix skipped file downloads due to race condition
If multiple threads detected that directory didn't exist at the same time and tried to create it then one thread would succeed in creating it first and other threads would be trying to create a directory that already exists.
boost::filesystem::create_directories() would then return false for those threads and skip the file download.

Having additional check to see if the directory exists after boost::filesystem::create_directories() returns false fixes the problem.
2016-11-03 21:51:20 +02:00
Sude
fb565f4493 Add "Message" class
Changed message queue to use the new "Message" class.
Simplifies status message printing by having the message class take care of formatting and keeping track of the message type.

Status messages are now timestamped and colored based on message type
2016-11-03 21:25:33 +02:00
Sude
0dfa610c28 Merge branch 'exit-status' of https://github.com/chewi/lgogdownloader 2016-11-03 20:54:04 +02:00
James Le Cuirot
1388c00a4e
Exit with non-zero status when --list or --list-details fails 2016-09-23 22:20:37 +01:00
James Le Cuirot
d8b8d6da96
Exit with non-zero status when at least one --download-file fails 2016-09-23 22:20:08 +01:00
James Le Cuirot
e36552c6ed
Add --respect-umask option to prevent adjusting permissions
I would like to use LGOGDownloader in conjunction with Gentoo's
package manager, which may execute it as root, portage, or some other
user in the portage group. A shared configuration under /etc will be
used to avoid sandboxing issues. This will not be world readable.
2016-09-21 23:49:32 +01:00
Sude
4ee63f7e87 Set some curl options for API handle in Downloader::processDownloadQueue
Some curl options which were used for API handle in Downloader::init weren't set for the API handle in Downloader::processDownloadQueue
2016-08-30 21:34:58 +03:00
Sude
24bd3a7c0e Set CA cert path in Downloader::processDownloadQueue
Forgot to set CURLOPT_CAINFO in 0b455ddedc for curl handles that Downloader::processDownloadQueue creates
2016-08-30 21:21:52 +03:00
Sude
0b455ddedc Add option to set CA certificate path
Adds options 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.
2016-08-30 19:34:47 +03:00
Sude
8f800c602f Make sure that website handle has updated config in Downloader::updateCheck 2016-08-27 23:27:01 +03:00
Sude
97169cef97 Get rid of getpass
Use termios to control terminal ECHO and read password with std::getline instead of using obsolete getpass()
2016-08-26 23:24:04 +03:00
Sude
31ebaee54c Fix issue with some GOG XML data files
Some GOG XML data files contain additional nodes/elements that were not handled properly and caused issues.
We only care about the "chunk" elements so lets ignore all other xml elements.
2016-07-15 18:33:03 +03:00
Sude
116f9d88f2 Fix error in ca436a9927
This caused average download rate to be always 0 because it was never set
2016-07-04 12:51:01 +03:00
Sude
ca436a9927 Add average download rate to progressInfo struct 2016-07-01 18:37:23 +03:00
Sude
0c89f13b10 Fix indentation
Fixes the indentation in 60fb4db339
2016-06-01 14:29:16 +03:00
Sude
60fb4db339 Add DLC language packs to orphan check
Forgot to add DLC language packs to Downloader::checkOrphans in ff2264763e
2016-06-01 14:25:05 +03:00
Sude
ff2264763e Add support for DLC language packs 2016-06-01 14:17:55 +03:00
Sude
4f5300be75 Delete file on failed download
File is deleted if the download wasn't a resume attempt or the result is zero length file
2016-05-30 14:54:57 +03:00
Sude
442fad04db Add support for parallel downloads
New option "--threads" can be used to set how many parallel downloads to run. The default is 4 threads.

Changes to behavior:
- Serials and changelogs are saved and covers downloaded for all games that match the "--game" filter before any other files are downloaded.
- Automatic XML creation is run after all files are downloaded. Previously xml data was automatically created right after download finished.
- The "--limit-rate" option sets rate limit for thread not global rate limit.
2016-05-20 20:33:07 +03:00
Sude
b7846e8bd5 Show progress for getting game names from account page 2016-05-20 12:25:29 +03:00
Sude
06fd4d496c Fix issue caused by 730c1ffe58
Util::getFileHash was called instead of Util::getLocalFileHash
This caused librhash error for files that didn't exist
2016-05-20 10:13:20 +03:00
Sude
730c1ffe58 Move code from Downloader::getLocalFileHash to Util::getLocalFileHash 2016-05-18 14:11:37 +03:00
Ferdinand Thiessen
c83f6294ab Ported code to use tinyxml2 instead of tinyxml 2016-05-13 14:37:02 +02:00
Sude
112ad17e18 Drop support for libcurl < 7.32.0 2016-05-03 16:48:54 +03:00
Sude
037582d3b1 Progressbar: add function to get bar as string 2016-04-27 20:47:15 +03:00
Sude
3fe58a06a1 Fix downloading language packs with file id 2016-04-26 18:22:34 +03:00
Sude
7b1127a85e Use CURLOPT_XFERINFOFUNCTION instead of obsolete CURLOPT_PROGRESSFUNCTION
CURLOPT_XFERINFOFUNCTION was introduced in libcurl 7.32.0
Newer libcurl prefers the new callback even if both CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION are set. Therefore we can still support older versions libcurl.
2016-04-25 19:26:02 +03:00
Sude
51026efec0 Fix issue with cache update
Fixes an issue caused by 33fb004cdd
Website handle didn't have updated config which caused overridden values to be ignored
2016-04-25 18:20:00 +03:00
Sude
5bfb00bb31 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 also has a new "gamedetails-cache-version" field that can be used to detect cache format changes
2016-04-25 18:14:04 +03:00
Sude
2538825fb2 Add missing WTFPL license text to gameDetails and gameFile classes 2016-04-18 20:39:31 +03:00
Sude
33fb004cdd Move 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 is split from Downloader::showWishlist to Website::getWishlistItems function
2016-04-18 20:33:19 +03:00
Sude
519cb78d38 Fix compiling with JsonCpp 1.7.1 2016-03-25 23:09:17 +02:00
Sude
0be499db7f Add support for two-step login 2016-03-12 09:30:43 +02:00
Sude
987e053ad4 Add option to save changelogs 2016-03-06 15:45:22 +02:00
Sude
852cb563ba Reduce the amount HTTP requests
Save game details json for later use when DLC info is downloaded in Downloader::getGames.
This reduces the amount of HTTP requests because we don't need to download the info again in Downloader::getGameDetails.
2016-03-06 14:02:30 +02:00
Sude
173481a6f6 Make --update-cache ignore dlc count information 2016-03-06 13:20:04 +02:00
Sude
ca97148827 Make sure that file exists before trying to automatically create xml data in Downloader::getLocalFileHash 2016-02-29 03:15:53 +02:00
Sude
21555b19f3 Fix --subdir-patches option
Forgot to set default subdirectory for patches in 4d4aaa1792
2016-02-24 01:58:03 +02:00
Thomas J. Moore
f29cf99431 Automatically create XML files (MD5sum cache) for manually downloaded
files during status check if automatic creation enabled.
2016-02-20 15:01:00 -06:00
Thomas J. Moore
9520f3f3b7 Improvements to orphan detection:
- 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
2016-02-20 14:59:52 -06:00
Thomas J. Moore
d9697ea988 Apply blacklist to status checker to avoid some spurious ND messages 2016-02-20 14:57:34 -06:00
Thomas J. Moore
c0735d5993 Use cerr for password prompts, error messages, rolling status
messages, and other stuff that shouldn't clutter saved stdout.
Probably needs more work.
2016-02-20 14:56:44 -06:00
Sude
0de2a9f64b Add support for priority in game specific language and platform options 2016-02-20 15:34:51 +02:00
Sude
4d4aaa1792 Improve game specific config options
"platform" and "language" options allow using string to set them.
This allows user to set them more easily without needing to calculate the sum of integer values and makes the config easier to understand later.
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".

Directory options can be overridden using game specific config file
New options in game specific config file:
 - "subdirectories" - <bool>
 - "directory" - <string>
 - "subdir-game" - <string>
 - "subdir-installers" - <string>
 - "subdir-extras" - <string>
 - "subdir-patches" - <string>
 - "subdir-language-packs" - <string>
 - "subdir-dlc" - <string>
2016-02-15 14:27:29 +02:00
Sude
fc88679b12 Add option to set automatic XML creation in config file 2016-02-04 11:51:11 +02:00
Sude
ddbb5d07cc Fix priority handling for DLCs 2015-10-03 19:52:19 +03:00
Sude
d648d3a073 Add Util::getOptionNameString to reduce some duplicate code 2015-10-03 19:03:24 +03:00
Sude
ba27e4fbcc Add version string and number to cached game details 2015-10-03 19:00:51 +03:00
Stephen Kitt
574a315c44 Check that stdin is a tty before reading
If stdin isn't a tty, the behaviour of std::getline(std::cin, email) and getpass() is different (the latter always uses /dev/tty). If input is redirected, it's probably best to just fail.
2015-09-13 15:15:21 +02:00
Sude
16b14d091b Simplify "all" value calculation to make it easier to understand
No idea why I was shifting 2 instead of 1 here.
2015-09-03 12:42:00 +03:00
Sude
d8c66707cc Fix retry on timeout
Don't delete the file on timeout
2015-09-02 16:11:03 +03:00
Sude
b4fd9fcf5c Use regular expressions for getting language and platform option values
Selecting languages with --language and --language-priority
- Whatever code GOG happens to use in their API (mostly ISO 639-1)
- ISO 639-1
- ISO 639-2/T
- ISO 639-2/B
- English name

Selecting platforms with --platform and --platform-priority
- Windows: "w, win, windows"
- Linux: "l, lin, linux"
- Mac: "m, mac, osx"
2015-09-02 11:16:00 +03:00
Sude
2206e988a6 Initial support for using platform/language strings to set options 2015-09-01 14:45:34 +03:00
Sude
9b560d786e Some minor code cleanup 2015-09-01 13:59:54 +03:00
Sude
887ac52563 Some improvements to priority handling
Fixes issues with some strings that caused issues previously
For example: 4,,1 is now handled correctly
2015-08-29 16:18:20 +03:00
Sude
a8e09a7f48 Use same structure for language and platform structs 2015-08-29 15:03:20 +03:00
Sude
2473b6f24d Remove tarball specific code from API 2015-08-29 14:31:59 +03:00
Sude
06d211f534 Simplify and remove duplicate code for getting config directory paths 2015-08-29 14:26:36 +03:00
Sude
b6d07f5343 Merge branch 'outname' of https://github.com/bwrsandman/lgogdownloader 2015-08-15 07:56:53 +03:00
Sandy Carter
bc92655702 Add output filename option
Add -o option to specify path and downloaded file name when using
--download-file
Overrides --directory
2015-08-14 23:15:15 -04:00
Sandy Carter
fe314869c1 Factor out protol string as a constant 2015-08-14 21:09:27 -04:00
Sude
ceef80167c Add support to ignore dlc count using game specific config with --list 2015-08-12 17:01:15 +03:00
Sude
64cae133cf Change path to look for game specific config files
Old path: $XDG_CONFIG_HOME/lgogdownloader/gamename.conf
New path: $XDG_CONFIG_HOME/lgogdownloader/gamespecific/gamename.conf
2015-08-12 16:53:25 +03:00
Sude
374453b806 Detect reCAPTCHA on login form 2015-08-12 16:47:17 +03:00
Sude
f51cca5dff Add options to login separately to website and API 2015-08-12 16:42:54 +03:00
Sude
9db2b8f2b0 Use getFormattedErrorMessages instead of deprecated getFormatedErrorMessages 2015-07-06 06:59:54 +03:00
Sude
6e5a0870e8 Delete old cookies when using --login 2015-07-06 06:47:09 +03:00
Erik Fleischer
fb23318d5a Fix --repair on 32 bit platforms for files > 2 GB. 2015-07-05 19:23:11 +02:00
Erik Fleischer
7e8f707846 Fixed segmentation fault on startup on 32 bit platforms.
Fixed downloading files > 2GB on 32 bit systems.
2015-07-05 15:50:16 +02:00
Erik Fleischer
0d73445e28 Some more small changes to handle files > 2GB on 32bit platforms. 2015-07-04 20:22:08 +02:00
Erik Fleischer
23df30d7be Continued replacing size_t with uintmax_t in order to handle file larger than 2GB on 32 bit platforms. 2015-07-03 22:09:50 +02:00
Erik Fleischer
095492942e Replaced size_t with uintmax_t for file size data types. 2015-07-02 18:27:28 +02:00
Sude
3f7fbc5bd1 Show DLC gamename instead of base gamename in --status output for DLCs 2015-07-02 03:04:04 +03:00
Sude
64690d0368 Add status code for file size mismatch 2015-07-02 03:01:21 +03:00
Sude
84e8ab8dab Tell user to try --login if JSON parsing fails in Downloader::getGames 2015-07-01 04:03:27 +03:00
Sude
699c9f29a5 Show the real filesize with --status on incomplete downloads 2015-07-01 04:01:18 +03:00
Sude
c4c2f8cb6d Use std::stoull instead of std::stoi in Downloader::checkStatus 2015-06-29 23:48:55 +03:00
Sude
59faa40b4b Check for incomplete download when using --status
Fixes issue with --status when remote xml data is already downloaded but the download was incomplete
Downloader::getLocalFileHash returned the same file hash as Downloader::getRemoteFileHash which caused --status to report it as OK
2015-06-29 23:00:22 +03:00
Sude
de301d7e8c Better handling of connection issues
Assume that we have connection error and abort transfer with CURLE_OPERATION_TIMEDOUT if download speed is less than 200 B/s for 30 seconds
2015-06-28 07:38:39 +03:00
Sude
c722283022 Move game filtering from Downloader::getGameList to Downloader::getGames 2015-06-21 17:20:53 +03:00
Petr Běhan
3de1c8332e better startup time when using --game regex
... especially when using generic --ignore-dlc-count='.*'

previously, lgogdownloader would fetch game details for every game
that indicated that it has DLCs. Which were all of them when used with
--ignore-dlc-count - potentialy hundreds of http queries and cause of very slow
startup with larger accounts. Regardless of what --game regex said.

After the change, only initial list of all games is fetched, and then details
for games that both the user is interested in AND they are suspected of
having DLC. So it should help with startup time even when user doesn't use
--ignore-dlc-count option.
2015-06-04 16:25:21 +02:00
Sude
834e6baa7a Add options to ignore DLC count information
Ignoring DLC count information helps in situations where the account page doesn't provide accurate information about DLCs.
--ignore-dlc-count sets regular expression filter for games to ignore DLC count information.
Game specific option "ignore-dlc-count" can be used to ignore DLC count for specific game.
2015-06-01 10:45:30 +03:00
Sude
584b953bd7 Skip extras without filename 2015-05-31 19:07:21 +03:00
Sude
0230a3517d Make Downloader::repairFile create new XML data on filesize mismatch 2015-05-30 12:42:10 +03:00
Sude
e8a8b1dd5f Fix error with login when cookies don't exist but API login works 2015-05-17 18:53:47 +03:00
Sude
c3916b2c9a Add simple login check as a fallback to current HTTP login check 2015-05-17 18:48:58 +03:00
Sude
6bf76db1da Some wishlist changes 2015-05-14 14:39:01 +03:00
Sude
29e6b6290c Add option to show wishlist 2015-05-13 17:13:30 +03:00
Sude
3e0c36beb5 Check if json has serials node and check if it is empty
Fixes downloader creating serials.txt even if the game didn't have any serials
2015-05-13 15:04:49 +03:00
Sude
5af5a286e7 Fix "Type is not convertible to string" error in Downloader::getGames
On some systems the integer to string conversion caused std::runtime_error "Type is not convertible to string"
2015-05-12 22:04:36 +03:00
Sude
50e1e34fba Add missing line ending to serial 2015-05-12 15:05:28 +03:00
Sude
cd0a829d59 Don't use the iterator directly in Util::getDownloaderUrlsFromJSON 2015-05-12 13:56:32 +03:00
Sude
c264f69eae Get game details json for dlcs later if needed
Speeds up getting game details when dlcs don't need the info from json data
2015-05-12 13:53:32 +03:00
Sude
b5cdf10078 Support new account page layout 2015-05-12 02:19:16 +03:00
Sude
21e6c6119d Make progressbar display 10 second average download speed 2015-04-27 16:51:17 +03:00
Ismo Toijala
9727b3f5c3 Fix multiple DLCs when using cache 2015-04-23 19:43:54 +02:00
Sude
d97849818e Add option to download files using file id 2015-04-11 16:42:10 +03:00
Sude
671d3ed056 Show url for http error messages 2015-04-06 16:16:26 +03:00
Sude
2fc7fa88a7 Fix skipping some files due to uncleared API error state
Sometimes when trying to get XML data failed and set API error it was never cleared.
This caused some files being skipped due to API still being in error state.
2015-03-28 14:16:00 +02:00
Sude
3834c1e612 Add option to skip fast platform detection
Useful in case platform identifier is missing for some games in the game shelf.
Using --platform with --list doesn't work when using --no-platform-detection
2015-03-28 12:52:41 +02:00
Sude
a708f3d5b8 Show response of HTTP error in API::getResponse when using debug build 2015-03-19 10:02:29 +02:00
Sude
216cfaedfe Add support for saving serial numbers 2015-03-19 09:50:50 +02:00
Sude
f039db5c65 Change jsoncpp include path 2015-01-22 09:22:48 +02:00
Sude
525985d3fb Ignore extras without filename 2015-01-05 17:02:55 +02:00
Sude
ae91c28cb0 Possible fix for crash in Downloader::checkStatus 2015-01-05 06:29:32 +02:00
Sude
7d5874d312 Make sure that file is regular file when getting local hash 2014-12-31 06:14:55 +02:00
Sude
d04cfbae1f Make progress bar adapt to terminal width 2014-11-27 23:20:22 +02:00
Sude
24105b07fe Forgot to clear API error in Downloader::getGameDetails 2014-11-22 16:07:51 +02:00
Sude
86d4e142bd Continue on API error instead of breaking off in Downloader::getGameDetails 2014-11-22 15:59:06 +02:00
Sude
c5a0a3b994 Revert "Fix login"
This reverts commit fb6c4496a5.
2014-11-19 23:59:27 +02:00
Sude
fb6c4496a5 Fix login 2014-11-19 22:47:42 +02:00
Sude
6751205ff3 Fix regex alias "all" for cached details 2014-11-17 16:28:43 +02:00
Sude
6bd51c9ed3 Fix using --update-cache with --use-cache 2014-11-17 15:32:06 +02:00
Sude
cb2395b0ba Make config and cookie files only readable/writable by current user 2014-10-28 21:03:02 +02:00
Gael Le Mignot
a46fad588b First working version of priority handling 2014-10-26 10:47:13 +01:00
Sude
b8d13514b7 Fix the regex in Downloader::HTTP_Login
The regex in ec79a18 was greedy and matched more than was necessary
Change the regex to non-greedy to fix this
2014-10-20 22:41:10 +03:00
Sude
ec79a18cf5 Fix login
GOG made some changes to their website which caused the regex in Downloader::HTTP_Login to match wrong auth url.
2014-10-19 18:33:23 +03:00
Sude
d0986542ef Don't get game list when using cache unless --list was used 2014-10-16 19:14:22 +03:00
Sude
9235ee8b4a Add support for caching game details
Helps with large libraries when running the downloader multiple times.
Getting game details for many games takes a long time. Caching the game details makes the process much faster for subsequent runs.

Game details are cached to "$XDG_CACHE_HOME/lgogdownloader/gamedetails.json"
--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
2014-10-16 11:05:57 +03:00
Sude
a6da2e5bea Set filepath for language packs
I forgot to set the filepath for language packs which caused some problems
2014-10-11 02:44:22 +03:00
Sude
6b0a39774a Better handling of empty %platform% in Util::filepathReplaceReservedStrings 2014-10-11 02:40:29 +03:00
Sude
8e29866870 Append date to renamed files 2014-09-20 15:35:56 +03:00
Sude
5635909e20 Add support for setting subdirectories
Allows user to specify subdirectories for games, installers, extras, patches, language packs and dlc
2014-09-19 22:46:03 +03:00
Sude
810506b74b Create filepaths in gameDetails class
Add makeFilepaths method to gameDetails class
Add setFilepath and getFilepath methods to gameFile class
2014-09-19 21:08:46 +03:00
Sude
7a00b59345 Move gameFile and gameDetails classes to their own files 2014-09-19 20:23:21 +03:00
Sude
4d404fc7df Rename old file instead of deleting it during --repair --download 2014-09-17 13:05:04 +03:00
Sude
7a15a93676 Change --report option to allow setting the filename of report 2014-09-17 12:41:01 +03:00
Neil Ramsbottom
1097e0758d Fixed spelling mistake in message displayed when downloading files. 2014-09-17 01:53:44 +02:00
Sude
55bc881d11 File hashing changes to Util::createXML
Update file hash in the same loop that chunk hashes are calculated
This gives the user better indication of the hashing progress
2014-09-10 16:16:04 +03:00
Sude
cba5fb928a Make Downloader::HTTP_Login print some more info 2014-09-10 13:46:24 +03:00
Sude
b23c9ed27d Only list games that support the platforms specified with --platform 2014-09-07 23:53:26 +03:00
Sude
0d39bcb460 Add platform info to gameFile class 2014-09-07 23:09:08 +03:00
Sude
6ebd897866 Fix login issues caused by case sensitivity 2014-09-04 20:00:53 +03:00
Sude
a5b1840e4d Better login check
Allows user to login with username instead of email
Print some info on failed login with debug build
2014-09-04 18:11:14 +03:00
Sude
cd2d1f22f8 Added --cover-list option to set url for cover list 2014-08-28 16:00:24 +03:00
Sude
0a20ef9ee7 Use remote xml data for patches 2014-08-28 12:51:02 +03:00
Sude
17dffe10f3 Fix language check for patches in Downloader::listGames 2014-08-27 20:22:05 +03:00
Sude
d63598a142 Make downloader work with the new layout 2014-08-27 19:57:20 +03:00
Sude
a51fb3ea26 Use boost regex in api if gcc/g++ < 4.9.0 2014-08-21 17:17:34 +03:00
Sude
6eba3c76cc Use update/notification flags for patches 2014-08-18 07:47:52 +03:00
Sude
1d221fee9f Add blacklist support for --list-details 2014-08-13 02:41:15 +03:00
Sude
a3673a58a4 Use regex to find patch and language pack nodes in API response 2014-08-09 19:15:51 +03:00
Sude
ffab972430 Increased the maximum patch id number
Some games had patch id numbers that were higher than the current maximum
2014-08-09 04:32:46 +03:00
Sude
705bde3f6f Add support for some game specific settings 2014-08-01 20:34:44 +03:00
Sude
4582884a0d Fix blacklisted file causing downloader to skip a game
Incorrect check for blacklisted file caused the downloader to skip a game instead of skipping just one file
2014-07-24 18:07:14 +03:00
Sude
6ed5da2fb3 Treat tarball archives in patch nodes as installers 2014-07-24 16:49:02 +03:00
Sude
01d8479d18 Remove the ugly hack to get details for Linux installers
GOG fixed API response for Linux installers
2014-07-24 16:00:50 +03:00
Sude
630d8a31c3 Add support for Linux installers 2014-07-24 15:36:50 +03:00
Sude
42a461ed55 Get patch details only for specified platforms 2014-07-12 00:36:04 +03:00
Sude
31c547be8a Fix saving config when init fails but --login was not used 2014-07-07 15:57:07 +03:00
Sude
ce26a4b020 Don't reset options set in config file on --login 2014-07-06 17:20:06 +03:00
Sude
2aeca35097 Tell the user to try --login if no games are found on the account. 2014-07-04 16:31:30 +03:00
Sude
c1e7adeb0b Display filepath for patches when downloading
Makes the behavior consistent with installers and extras
2014-07-03 21:38:53 +03:00
Petr Běhan
95fd2bbff1 implemented blacklist for --download, --repair and --check-orphans 2014-07-02 19:56:18 +03:00
Sude
3dd4a95896 Make login work with the new login form 2014-07-02 19:52:43 +03:00
Ismo Toijala
526aab5c05 Don't hash files after downloading for which remote XML is available 2014-06-21 16:00:36 +02:00
Sude
ebb9aa61d4 Remove language id/code from urls as GOG no longer requires it. 2014-06-19 00:31:09 +03:00