404 Commits

Author SHA1 Message Date
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.
4c480465b33b1784f08a482ac0086f7ff5c2c1ad 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 0b455ddedcc903538989d800e48b08974fe5aa72 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 ca436a9927d673183cae7d227c90d53ca29b1ba6
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 60fb4db339066bab7616d8ef7a05c5f0679c71f6
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 ff2264763e4f1b1009eb10510a0d6dd738711e26
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 730c1ffe5875d2d7c6d31320f79b0f5be0e85890
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 33fb004cdd8ccbcb08b1f5ad9b62b1fe4801941d
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 4d4aaa1792c52b665235e7c1f0538f8cc63d6981
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