mirror of
https://github.com/Sude-/lgogdownloader.git
synced 2025-03-09 21:01:53 +01:00
Remove dlc-list support and a small change to getting game names
This commit is contained in:
parent
367b57ca89
commit
759bb1d992
@ -309,15 +309,12 @@ class Config
|
|||||||
// Lists
|
// Lists
|
||||||
Blacklist blacklist;
|
Blacklist blacklist;
|
||||||
Blacklist ignorelist;
|
Blacklist ignorelist;
|
||||||
Blacklist gamehasdlc;
|
|
||||||
|
|
||||||
// Cloud save options
|
// Cloud save options
|
||||||
std::vector<std::string> cloudWhiteList;
|
std::vector<std::string> cloudWhiteList;
|
||||||
std::vector<std::string> cloudBlackList;
|
std::vector<std::string> cloudBlackList;
|
||||||
bool bCloudForce;
|
bool bCloudForce;
|
||||||
|
|
||||||
std::string sGameHasDLCList;
|
|
||||||
|
|
||||||
// Integers
|
// Integers
|
||||||
int iRetries;
|
int iRetries;
|
||||||
unsigned int iThreads;
|
unsigned int iThreads;
|
||||||
|
31
main.cpp
31
main.cpp
@ -59,7 +59,6 @@ int main(int argc, char *argv[])
|
|||||||
Globals::globalConfig.sConfigFilePath = Globals::globalConfig.sConfigDirectory + "/config.cfg";
|
Globals::globalConfig.sConfigFilePath = Globals::globalConfig.sConfigDirectory + "/config.cfg";
|
||||||
Globals::globalConfig.sBlacklistFilePath = Globals::globalConfig.sConfigDirectory + "/blacklist.txt";
|
Globals::globalConfig.sBlacklistFilePath = Globals::globalConfig.sConfigDirectory + "/blacklist.txt";
|
||||||
Globals::globalConfig.sIgnorelistFilePath = Globals::globalConfig.sConfigDirectory + "/ignorelist.txt";
|
Globals::globalConfig.sIgnorelistFilePath = Globals::globalConfig.sConfigDirectory + "/ignorelist.txt";
|
||||||
Globals::globalConfig.sGameHasDLCListFilePath = Globals::globalConfig.sConfigDirectory + "/game_has_dlc.txt";
|
|
||||||
Globals::globalConfig.sTransformConfigFilePath = Globals::globalConfig.sConfigDirectory + "/transformations.json";
|
Globals::globalConfig.sTransformConfigFilePath = Globals::globalConfig.sConfigDirectory + "/transformations.json";
|
||||||
|
|
||||||
Globals::galaxyConf.setFilepath(Globals::globalConfig.sConfigDirectory + "/galaxy_tokens.json");
|
Globals::galaxyConf.setFilepath(Globals::globalConfig.sConfigDirectory + "/galaxy_tokens.json");
|
||||||
@ -196,7 +195,6 @@ int main(int argc, char *argv[])
|
|||||||
bool bNoSubDirectories = false;
|
bool bNoSubDirectories = false;
|
||||||
bool bNoPlatformDetection = false;
|
bool bNoPlatformDetection = false;
|
||||||
bool bNoGalaxyDependencies = false;
|
bool bNoGalaxyDependencies = false;
|
||||||
bool bUseDLCList = false;
|
|
||||||
bool bNoFastStatusCheck = false;
|
bool bNoFastStatusCheck = false;
|
||||||
std::string sInstallerPlatform;
|
std::string sInstallerPlatform;
|
||||||
std::string sInstallerLanguage;
|
std::string sInstallerLanguage;
|
||||||
@ -290,8 +288,6 @@ int main(int argc, char *argv[])
|
|||||||
("save-changelogs", bpo::value<bool>(&Globals::globalConfig.dlConf.bSaveChangelogs)->zero_tokens()->default_value(false), "Save changelogs when downloading")
|
("save-changelogs", bpo::value<bool>(&Globals::globalConfig.dlConf.bSaveChangelogs)->zero_tokens()->default_value(false), "Save changelogs when downloading")
|
||||||
("threads", bpo::value<unsigned int>(&Globals::globalConfig.iThreads)->default_value(4), "Number of download threads")
|
("threads", bpo::value<unsigned int>(&Globals::globalConfig.iThreads)->default_value(4), "Number of download threads")
|
||||||
("info-threads", bpo::value<unsigned int>(&Globals::globalConfig.iInfoThreads)->default_value(4), "Number of threads for getting product info")
|
("info-threads", bpo::value<unsigned int>(&Globals::globalConfig.iInfoThreads)->default_value(4), "Number of threads for getting product info")
|
||||||
("use-dlc-list", bpo::value<bool>(&bUseDLCList)->zero_tokens()->default_value(false), "Use DLC list specified with --dlc-list")
|
|
||||||
("dlc-list", bpo::value<std::string>(&Globals::globalConfig.sGameHasDLCList)->default_value("https://raw.githubusercontent.com/Sude-/lgogdownloader-lists/master/game_has_dlc.txt"), "Set URL for list of games that have DLC")
|
|
||||||
("progress-interval", bpo::value<int>(&Globals::globalConfig.iProgressInterval)->default_value(100), "Set interval for progress bar update (milliseconds)\nValue must be between 1 and 10000")
|
("progress-interval", bpo::value<int>(&Globals::globalConfig.iProgressInterval)->default_value(100), "Set interval for progress bar update (milliseconds)\nValue must be between 1 and 10000")
|
||||||
("lowspeed-timeout", bpo::value<long int>(&Globals::globalConfig.curlConf.iLowSpeedTimeout)->default_value(30), "Set time in number seconds that the transfer speed should be below the rate set with --lowspeed-rate for it to considered too slow and aborted")
|
("lowspeed-timeout", bpo::value<long int>(&Globals::globalConfig.curlConf.iLowSpeedTimeout)->default_value(30), "Set time in number seconds that the transfer speed should be below the rate set with --lowspeed-rate for it to considered too slow and aborted")
|
||||||
("lowspeed-rate", bpo::value<long int>(&Globals::globalConfig.curlConf.iLowSpeedTimeoutRate)->default_value(200), "Set average transfer speed in bytes per second that the transfer should be below during time specified with --lowspeed-timeout for it to be considered too slow and aborted")
|
("lowspeed-rate", bpo::value<long int>(&Globals::globalConfig.curlConf.iLowSpeedTimeoutRate)->default_value(200), "Set average transfer speed in bytes per second that the transfer should be below during time specified with --lowspeed-timeout for it to be considered too slow and aborted")
|
||||||
@ -449,33 +445,6 @@ int main(int argc, char *argv[])
|
|||||||
Globals::globalConfig.transformationsJSON = Util::readJsonFile(Globals::globalConfig.sTransformConfigFilePath);
|
Globals::globalConfig.transformationsJSON = Util::readJsonFile(Globals::globalConfig.sTransformConfigFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bUseDLCList)
|
|
||||||
Globals::globalConfig.sGameHasDLCList = "";
|
|
||||||
|
|
||||||
if (Globals::globalConfig.sIgnoreDLCCountRegex.empty())
|
|
||||||
{
|
|
||||||
if (boost::filesystem::exists(Globals::globalConfig.sGameHasDLCListFilePath) && bUseDLCList)
|
|
||||||
{
|
|
||||||
std::ifstream ifs(Globals::globalConfig.sGameHasDLCListFilePath.c_str());
|
|
||||||
if (!ifs)
|
|
||||||
{
|
|
||||||
std::cerr << "Could not open list of games that have dlc: " << Globals::globalConfig.sGameHasDLCListFilePath << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::string line;
|
|
||||||
std::vector<std::string> lines;
|
|
||||||
while (!ifs.eof())
|
|
||||||
{
|
|
||||||
std::getline(ifs, line);
|
|
||||||
lines.push_back(std::move(line));
|
|
||||||
}
|
|
||||||
Globals::globalConfig.gamehasdlc.initialize(lines);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_QT_GUI_LOGIN
|
#ifdef USE_QT_GUI_LOGIN
|
||||||
if (Globals::globalConfig.bForceGUILogin)
|
if (Globals::globalConfig.bForceGUILogin)
|
||||||
{
|
{
|
||||||
|
@ -411,12 +411,6 @@ Number of download threads
|
|||||||
\fB\-\-info\-threads\fR arg (=4)
|
\fB\-\-info\-threads\fR arg (=4)
|
||||||
Number of threads for getting product info
|
Number of threads for getting product info
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-use\-dlc\-list\fR
|
|
||||||
Use DLC list specified with \fB\-\-dlc\-list\fR
|
|
||||||
.TP
|
|
||||||
\fB\-\-dlc\-list\fR arg (=https://raw.githubusercontent.com/Sude\-/lgogdownloader\-lists/master/game_has_dlc.txt)
|
|
||||||
Set URL for list of games that have DLC
|
|
||||||
.TP
|
|
||||||
\fB\-\-progress\-interval\fR arg (=100)
|
\fB\-\-progress\-interval\fR arg (=100)
|
||||||
Set interval for progress bar update (milliseconds)
|
Set interval for progress bar update (milliseconds)
|
||||||
.br
|
.br
|
||||||
@ -742,17 +736,6 @@ blacklist.
|
|||||||
.br
|
.br
|
||||||
It doesn't have to exist, but if it does exist, it must be readable to lgogdownloader.
|
It doesn't have to exist, but if it does exist, it must be readable to lgogdownloader.
|
||||||
|
|
||||||
.TP
|
|
||||||
\fI$XDG_CONFIG_HOME/lgogdownloader/game_has_dlc.txt\fP
|
|
||||||
Allows user to specify which games have dlc and should have their DLC count
|
|
||||||
information ignored. The file has the same format and interpretation as a
|
|
||||||
blacklist.
|
|
||||||
.br
|
|
||||||
It doesn't have to exist, but if it does exist, it must be readable to lgogdownloader.
|
|
||||||
.br
|
|
||||||
If the file exists lgogdownloader uses it instead of list specified with
|
|
||||||
\fB--dlc-list\fP option
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fI$XDG_CONFIG_HOME/lgogdownloader/gamespecific/gamename.conf\fP
|
\fI$XDG_CONFIG_HOME/lgogdownloader/gamespecific/gamename.conf\fP
|
||||||
JSON formatted file. Sets game specific settings for \fBgamename\fP.
|
JSON formatted file. Sets game specific settings for \fBgamename\fP.
|
||||||
|
@ -200,16 +200,6 @@ bool Downloader::isLoggedIn()
|
|||||||
*/
|
*/
|
||||||
int Downloader::init()
|
int Downloader::init()
|
||||||
{
|
{
|
||||||
if (!Globals::globalConfig.sGameHasDLCList.empty())
|
|
||||||
{
|
|
||||||
if (Globals::globalConfig.gamehasdlc.empty())
|
|
||||||
{
|
|
||||||
std::string game_has_dlc_list = this->getResponse(Globals::globalConfig.sGameHasDLCList);
|
|
||||||
if (!game_has_dlc_list.empty())
|
|
||||||
Globals::globalConfig.gamehasdlc.initialize(Util::tokenize(game_has_dlc_list, "\n"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gogGalaxy->init())
|
if (!gogGalaxy->init())
|
||||||
{
|
{
|
||||||
if (gogGalaxy->refreshLogin())
|
if (gogGalaxy->refreshLogin())
|
||||||
|
@ -498,6 +498,8 @@ std::vector<std::string> Util::getDLCNamesFromJSON(const Json::Value &root)
|
|||||||
{
|
{
|
||||||
std::string gamename;
|
std::string gamename;
|
||||||
std::string url_prefix = "/downloads/";
|
std::string url_prefix = "/downloads/";
|
||||||
|
if (urls[i].find(url_prefix) == std::string::npos)
|
||||||
|
continue;
|
||||||
|
|
||||||
gamename.assign(urls[i].begin()+urls[i].find(url_prefix)+url_prefix.length(), urls[i].begin()+urls[i].find_last_of("/"));
|
gamename.assign(urls[i].begin()+urls[i].find(url_prefix)+url_prefix.length(), urls[i].begin()+urls[i].find_last_of("/"));
|
||||||
bool bDuplicate = false;
|
bool bDuplicate = false;
|
||||||
|
@ -97,7 +97,7 @@ std::vector<gameItem> Website::getGames()
|
|||||||
{
|
{
|
||||||
std::vector<gameItem> games;
|
std::vector<gameItem> games;
|
||||||
Json::Value root;
|
Json::Value root;
|
||||||
int i = 1;
|
int iPage = 1;
|
||||||
bool bAllPagesParsed = false;
|
bool bAllPagesParsed = false;
|
||||||
int iUpdated = Globals::globalConfig.bUpdated ? 1 : 0;
|
int iUpdated = Globals::globalConfig.bUpdated ? 1 : 0;
|
||||||
int iHidden = 0;
|
int iHidden = 0;
|
||||||
@ -111,9 +111,10 @@ std::vector<gameItem> Website::getGames()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Globals::vOwnedGamesIds = this->getOwnedGamesIds();
|
Globals::vOwnedGamesIds = this->getOwnedGamesIds();
|
||||||
|
std::vector<Json::Value> jsonProductInfo;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
std::string url = "https://www.gog.com/account/getFilteredProducts?hiddenFlag=" + std::to_string(iHidden) + "&isUpdated=" + std::to_string(iUpdated) + "&mediaType=1&sortBy=title&system=&page=" + std::to_string(i);
|
std::string url = "https://www.gog.com/account/getFilteredProducts?hiddenFlag=" + std::to_string(iHidden) + "&isUpdated=" + std::to_string(iUpdated) + "&mediaType=1&sortBy=title&system=&page=" + std::to_string(iPage);
|
||||||
if (!tags.empty())
|
if (!tags.empty())
|
||||||
url += "&tags=" + tags;
|
url += "&tags=" + tags;
|
||||||
|
|
||||||
@ -121,6 +122,8 @@ std::vector<gameItem> Website::getGames()
|
|||||||
if (root.empty())
|
if (root.empty())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
std::cerr << "\033[KGetting product data " << root["page"].asInt() << " / " << root["totalPages"].asInt() << "\r" << std::flush;
|
||||||
|
|
||||||
if (root["page"].asInt() == root["totalPages"].asInt() || root["totalPages"].asInt() == 0)
|
if (root["page"].asInt() == root["totalPages"].asInt() || root["totalPages"].asInt() == 0)
|
||||||
bAllPagesParsed = true;
|
bAllPagesParsed = true;
|
||||||
|
|
||||||
@ -129,15 +132,24 @@ std::vector<gameItem> Website::getGames()
|
|||||||
{
|
{
|
||||||
bAllPagesParsed = false;
|
bAllPagesParsed = false;
|
||||||
iHidden = 1;
|
iHidden = 1;
|
||||||
i = 0; // Set to 0 because we increment it at the end of the loop
|
iPage = 0; // Set to 0 because we increment it at the end of the loop
|
||||||
}
|
}
|
||||||
|
|
||||||
if (root["products"].isArray())
|
if (root["products"].isArray())
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < root["products"].size(); ++i)
|
for (auto product : root["products"])
|
||||||
|
jsonProductInfo.push_back(product);
|
||||||
|
}
|
||||||
|
iPage++;
|
||||||
|
} while (!bAllPagesParsed);
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
unsigned int iProduct = 0;
|
||||||
|
unsigned int iProductTotal = jsonProductInfo.size();
|
||||||
|
for (auto product : jsonProductInfo)
|
||||||
{
|
{
|
||||||
std::cerr << "\033[KGetting game names " << "(" << root["page"].asInt() << "/" << root["totalPages"].asInt() << ") " << i+1 << " / " << root["products"].size() << "\r" << std::flush;
|
iProduct++;
|
||||||
Json::Value product = root["products"][i];
|
std::cerr << "\033[KGetting game names " << iProduct << " / " << iProductTotal << "\r" << std::flush;
|
||||||
gameItem game;
|
gameItem game;
|
||||||
game.name = product["slug"].asString();
|
game.name = product["slug"].asString();
|
||||||
game.id = product["id"].isInt() ? std::to_string(product["id"].asInt()) : product["id"].asString();
|
game.id = product["id"].isInt() ? std::to_string(product["id"].asInt()) : product["id"].asString();
|
||||||
@ -209,12 +221,6 @@ std::vector<gameItem> Website::getGames()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bDownloadDLCInfo && !Globals::globalConfig.gamehasdlc.empty())
|
|
||||||
{
|
|
||||||
if (Globals::globalConfig.gamehasdlc.isBlacklisted(game.name))
|
|
||||||
bDownloadDLCInfo = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check game specific config
|
// Check game specific config
|
||||||
if (!Globals::globalConfig.bUpdateCache) // Disable game specific config files for cache update
|
if (!Globals::globalConfig.bUpdateCache) // Disable game specific config files for cache update
|
||||||
{
|
{
|
||||||
@ -244,9 +250,6 @@ std::vector<gameItem> Website::getGames()
|
|||||||
}
|
}
|
||||||
games.push_back(game);
|
games.push_back(game);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
i++;
|
|
||||||
} while (!bAllPagesParsed);
|
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
if (Globals::globalConfig.bIncludeHiddenProducts)
|
if (Globals::globalConfig.bIncludeHiddenProducts)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user