It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
https://www.gog.com/forum/general/download_screen/page1

I just noticed this issue too, ie. Sea Dogs is by default offering me the Russian version on the download web page, instead of the English version. You have to change it manually to English in order to get it.

Do you know if this issue affects also gogrepo.py, ie. it might accidentally download non-English version? How does it determine the correct language version? At least in that particular case the Russian version seems to have "russian" in the installer filename, the English version has none.

(Yeah I know many people want to download different languages instead, but I want only the English versions.)
Post edited June 08, 2015 by timppu
avatar
schlulou: Thanks for that script. Got it to run fine and it is downloading my games and extras just fine. Only problem seems to be that its not possible to download multiple languages. In my case english and german. I opened an issue with further info on github for that. Found this thread only now.
Hmm should work, I'll look into this today or tomorrow and let you know.
avatar
timppu: https://www.gog.com/forum/general/download_screen/page1

I just noticed this issue too, ie. Sea Dogs is by default offering me the Russian version on the download web page, instead of the English version. You have to change it manually to English in order to get it.

Do you know if this issue affects also gogrepo.py, ie. it might accidentally download non-English version? How does it determine the correct language version? At least in that particular case the Russian version seems to have "russian" in the installer filename, the English version has none.

(Yeah I know many people want to download different languages instead, but I want only the English versions.)
gogrepo should not be affected by the fact that GOG's download pages sometimes auto-selects some other language. I've seen this before.

Keep in mind that some "bonuses" are listed with other languages, but are not tagged in their html code with "lang_xx". Nothing I can really do about those in a "safe" way.. (example: ./the_witcher_3_wild_hunt/bonus_pack_french.zip)
Post edited June 09, 2015 by woolymethodman
avatar
woolymethodman: gogrepo should not be affected by the fact that GOG's download pages sometimes auto-selects some other language. I've seen this before.
Ok thanks. Just so that I don't end up downloading 1.5 terabytes of Russian-language GOG games at some point. :)
avatar
schlulou: Thanks for that script. Got it to run fine and it is downloading my games and extras just fine. Only problem seems to be that its not possible to download multiple languages. In my case english and german. I opened an issue with further info on github for that. Found this thread only now.
avatar
woolymethodman: Hmm should work, I'll look into this today or tomorrow and let you know.
Thank you! Would help a lot.
This should be stickied. Great effort, thanks!
I can login just fine but when I try to update I get this:

F:\>gogrepo.py update
10:01:25 | downloading game shelf data...
10:01:25 | downloading game shelf data (page 1)...
10:01:29 | request failed: HTTP Error 404: Not Found. will not retry.
10:01:29 | fatal...
Traceback (most recent call last):
File "F:\gogrepo.py", line 758, in <module>
main(process_argv(sys.argv))
File "F:\gogrepo.py", line 735, in main
cmd_update(args.os, args.lang)
File "F:\gogrepo.py", line 306, in cmd_update
shelf_html = fetch_game_shelf_data()
File "F:\gogrepo.py", line 193, in fetch_game_shelf_data
'p': str(i)}, delay=0) as data_request:
File "F:\gogrepo.py", line 94, in request
page = opener.open(req)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 404: Not Found

Any ideas whats going on ?
Yeah.. GOG *just* removed their "gamesShelfMore' API which is needed to collect game information and metadata. I guess they've officially deprecated it :(

I'll have to reverse engineer the new API and json objects and fix the script. This will take some time but I'll try my best with the little free time I have.

FYI The new shelving API seems to use "getFliteredProducts".
Awww... I hope GOG's change is not related to trying to break this (and other 3rd party) downloaders.

I can understand if GOG is not keen on promoting the idea of people massively downloading all their GOG games (maybe even several times), but rather "download a game only when you need it", in order not to cause too much burden on servers. They don't necessarily want to make it _too_ convenient.

Of course downloading all games with GOG's existing official tools is possible, but just quite a lot of work if you have lots of games. Yes, I have downloaded hundreds of my games already in the past with the GOG Downloader; I think the main pain point was not really downloading them once, but trying to keep the local backups up to date (ie. track easily which of your hundred games had received updates, and then just download the changed parts). This gogrepo.py seemed to be a good solution especially to this "keeping the backups updated" problem. Also, it is apparently a pretty good tool to check the integrity of your GOG collection, e.g. so that installers don't get corrupted when you copy them around.

Anyway, if the server burden is the problem, then I wish GOG would come up with some kind of p2p-client that would take burden off of GOG servers, ie. people can automatically let the client upload installers also to other legitimate users who are trying to download them from GOG.
Post edited June 11, 2015 by timppu
Hi Folks.

I’m making great progress on updating the script to the new API. I just got all the new parsing code working and now I’m running it overnight for testing. If everything goes well, I hope to upload the new version on Sunday (I’m out of town Friday and Saturday).

Happy GOGing
avatar
woolymethodman: Hi Folks.

I’m making great progress on updating the script to the new API. I just got all the new parsing code working and now I’m running it overnight for testing. If everything goes well, I hope to upload the new version on Sunday (I’m out of town Friday and Saturday).

Happy GOGing
Thanks a lot. Hope it will work!
Hi all, I've released gogrepo.py v0.3

https://github.com/eddie3/gogrepo

Changelog:
- update gogrepo.py to work with new GOG APIs
- add OS type validation check (must be one or more of 'windows', 'linux', or 'mac')
- MD5 data requests are now done immediately after file name/size request, rather than
running through another loop of product data
- command line parameter -skipbonus now called -skipextras

Feel free to let me know if you see any issues, or report them to the github project.

Cheers
Hi folks. FYI I am almost done adding better language selection support.

GOG's json data lists all downloads by language, but they are in hard-to-read UTF-8 encoding (basically just as you see in gog galaxy client, or your web browser when viewing your account games.. in the native typography).

To simplify this, I'm adding 2 letter language codes that you will be able to feed to gogrepo.py... such as 'en', 'fr', 'de', 'pl', etc. The script will also validate and let you know if it doesn't recognzie one of the languages you specify.

I think I've got all the languages GOG supports (I scraped all the games I have), but if you expect some that are missing let me know and we can look into that (I would just need the unicode version of the string to map).

I hope to publish this version tonight and would appreciate any feedback or bug reports.

Cheers!
Hello.

Now I'm here on GOG because I love the DRM-free philosophy. And while I enjoy Galaxy, I would like to have an easy solution to backup the DRM-free installers, too. So I came to your script and I guess soon as the clean command is there, it will be EXACTLY what I need.

But I have a question: I got 172 games in my library and the update process takes between 10 to 30 seconds to fetch the infos for a single game.

Example:
16:19:43 | ( 45 / 172) fetching game details for legend_of_grimrock...
16:20:08 | ( 46 / 172) fetching game details for legend_of_grimrock_2...

That is a real bummer for me right now as I'd love to update my collection regularly but it can easily take an hour just to run the update process. Is this a normal behavior right now or is there something I can do about it?
I'm running Arch Linux (x64) and I am launching the script with python 2.7. If I can give you any more infos, let me know. Thanks. :)
avatar
8BitChris: Hello.

Now I'm here on GOG because I love the DRM-free philosophy. And while I enjoy Galaxy, I would like to have an easy solution to backup the DRM-free installers, too. So I came to your script and I guess soon as the clean command is there, it will be EXACTLY what I need.

But I have a question: I got 172 games in my library and the update process takes between 10 to 30 seconds to fetch the infos for a single game.

Example:
16:19:43 | ( 45 / 172) fetching game details for legend_of_grimrock...
16:20:08 | ( 46 / 172) fetching game details for legend_of_grimrock_2...

That is a real bummer for me right now as I'd love to update my collection regularly but it can easily take an hour just to run the update process. Is this a normal behavior right now or is there something I can do about it?
I'm running Arch Linux (x64) and I am launching the script with python 2.7. If I can give you any more infos, let me know. Thanks. :)
It's best to run an update overnight. It takes time because it needs to fetch md5 info for every installer file that matches your os/language filter. Also there is 1sec delay by default between each request to avoid being banned by gog for doing too many Web requests to their server. You can change this but risk being banned

I could add an option to skip md5/file size info fetch but without md5 the verify command wouldn't be useful at checking your file integrity.

I also plan to add a way to update and download a single game for a quick grab without needing to do full update
Would it be possible to implement a "live download" feature, that works its way through downloading the game data, verifying the size/MD5 and zip file and then downloading anything that's missing/mismatched/corrupt in 1 hit ? You could remember the data in a manifest as well. I've written a batch file that does a similar thing but the download option only verifies size not MD5 / zip file function.

Also, would it be possible to output the manifest file as you go, rather than in one batch at the end ? The way it currently works is that if your internet gives out in the middle you have to start over. I guess your partial update will implement something similar to this and it'd be a real timesaver if there were internet problems while updating large collections (would only have to redownload stuff not in the manifest)

Otherwise this has been awesome , thank you so much.