Geralt_of_Rivia: The last time I checked (though that was years ago with a browser) the GOG servers only allowed 6 connections at a time so 10 workers might be a bit too much. It doesn't hurt though the connections over the limit will simply get delayed until one of the earlier connections has ended.
And while the GOG API may be a bottleneck the question is always how close you can get to the restrictions set by the bottleneck with your implementation. My data collection is a bit more than 4 times faster than gogrepo and I haven't even done any optimization yet. So obviously I'm interested to know if there is still room for improvement.
Edit: I just checked and now the servers allow more than 6 connections.
I haven't timed it exactly (that would require me patiently waiting for it to run), but for 2071 games (yes, you may judge me), linux & windows installers, english & french & spanish & japanese languages, its somewhere between 10 and 20 minutes I believe.
Note that there is an imposed 200ms delay between requests to prevent the simulation of a mini dos attack. I haven't figured out gog's tolerance there, but by reducing that delay (it is a parameter in the command), some time might be saved.
I have a feeling that if follow Sude's instructions with the Galaxy api, I may be able to shave off some requests (and hence time), but I'll leave that to a future optimisation for now.
Here is my manifest summary:
{
"Games": 2071,
"Files": 11793,
"Installers": 6507,
"Extras": 5286,
"Size": 7449916626462,
"SizeAsString": "7.45 TB",
"SizeAverage": 3597255734,
"SizeAverageAsString": "3.60 GB",
"LargestGame": {
"Id": 1943729964,
"Title": "Wolfenstein: The New Order",
"Size": 135056012577,
"SizeAsString": "135.06 GB",
"Installers": 36,
"Extras": 0
},
"SmallestGame": {
"Id": 1207658773,
"Title": "Personal Nightmare",
"Size": 13261312,
"SizeAsString": "13.26 MB",
"Installers": 1,
"Extras": 0
}
}
Here are some dangling files that gog has:
{
"Errors": [
"GetDownloadInfo(downloadPath=/downloads/craft_the_world/en1patch1) -\u003e Expected response status code of 200, but got 404",
"GetDownloadInfo(downloadPath=/downloads/metro_exodus/85424) -\u003e Expected response status code of 200, but got 403",
"GetDownloadInfo(downloadPath=/downloads/dreamfall_chapters_season_pass/77333) -\u003e Expected response status code of 200, but got 403",
"GetDownloadInfo(downloadPath=/downloads/republique/41353) -\u003e Expected response status code of 200, but got 403"
]
}
Craft the world is a dangling patch they forgot to delete. Republique has a "coming soon" manual that will probably never see the light of day (the game is not even listed on the store anymore). The two others, I'll have to look.