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

×
avatar
Kalanyr: Err what do people prefer as default behaviour

Downloading Non-Galaxy , Galaxy or Both ? It will be modified via parameters of course.

Also is there any desire to skip shared files : eg if you're storing non-Galaxy installers somewhere else as an emergency backup and don't want to double store stuff ?
I vote Non-Galaxy as default behaviour.
Hey there how do I find out what the ID of a game is.
Apologies for the delay on something so trivial. I decided I should clean things up a bit and make it clear what was Galaxy/Standalone/Shared and give appropriate filtering options , then that lead to me rethinking the way existing filtering options work and rewriting a bunch of stuff (and then rerewriting a bunch of extra stuff because I thought I should keep backwards compatibility).

avatar
Magmarock: Hey there how do I find out what the ID of a game is.
It's in the gog_manifest.dat file , you can just use the directory name for most GOGrepo purposes though.
Post edited July 15, 2017 by Kalanyr
avatar
Geralt_of_Rivia: First and foremost: Is there a reason why other people are starting to fork gogrepo? What happened to woolymethodman and the next version that was supposed to appear soon?
I think he mentioned getting engaged and a new work, which to me makes it understandable he doesn't necessarily even think about GOG nor gogrepo much. He seems to pop in once in a awhile though.

Good thing others have forked the project... but too bad the original author's next version was supposed to bring the vastly accelerated update function where it doesn't need to pause between each new http connection, when getting file details for the manifest file. Do I remember right he found a way to get all the file details for all games in one http session, without needing to reconnect to GOG.com separately for each game (or file)? And that removed the need to pause for a second before each game, in order to avoid a temporary GOG ban for an alleged DDOS attack?

I wish one of these forks would figure out the same and get it implemented, as currently the full update is very slow (I think it takes me something like 11-12 hours nowadays for 1369 games).

The other features I suggested earlier, like being able to divide your GOG collection to two or more paths/drives and the ability to skip downloading some of the files in the manifest file (like the non-English and non-Windows versions which get downloaded because they are in the extras; a blacklist basically)... I found workable workarounds for those (litte more manual work needed), so I guess I can live without those feature requests.

It is mainly just that vastly accelerated update that I am looking for now.
Post edited July 16, 2017 by timppu
avatar
Geralt_of_Rivia: First and foremost: Is there a reason why other people are starting to fork gogrepo? What happened to woolymethodman and the next version that was supposed to appear soon?
avatar
timppu: I think he mentioned getting engaged and a new work, which to me makes it understandable he doesn't necessarily even think about GOG nor gogrepo much. He seems to pop in once in a awhile though.

Good thing others have forked the project... but too bad the original author's next version was supposed to bring the vastly accelerated update function where it doesn't need to pause between each new http connection, when getting file details for the manifest file. Do I remember right he found a way to get all the file details for all games in one http session, without needing to reconnect to GOG.com separately for each game (or file)? And that removed the need to pause for a second before each game, in order to avoid a temporary GOG ban for an alleged DDOS attack?

I wish one of these forks would figure out the same and get it implemented, as currently the full update is very slow (I think it takes me something like 11-12 hours nowadays for 1369 games).

The other features I suggested earlier, like being able to divide your GOG collection to two or more paths/drives and the ability to skip downloading some of the files in the manifest file (like the non.English and non-Windows versions which get downloaded because they are in the extras; a blacklist basically)... I found workable workarounds for those (litte more manual work needed), so I guess I can live without those feature requests.

It is mainly just that vastly accelerated update that I am looking for now.
I just went back to where those enhancements were discussed (bottom of https://www.gog.com/forum/general/gogrepopy_python_script_for_regularly_backing_up_your_purchased_gog_collection_for_full_offline_e/page26 through to top of next page). I could try and implement that but I can't work out to get api.gog.com to show Galaxy installers right now, which is a bit of a problem, if someone has found out the correct way let me know, then I'm happy to see if I can get it going.
avatar
Kalanyr: [..]
If you manage, please try to also add the optional feature to pre-allocate file size to avoid downloads fragmentation.
avatar
Kalanyr: [..]
avatar
phaolo: If you manage, please try to also add the optional feature to pre-allocate file size to avoid downloads fragmentation.
That wouldn't be hard but it would invalidate the quick file size check used by clean to detect download interruption. You'd have to be much more careful to use verify frequently.

t's also possible to allocate the file somewhere else , then only move it on completion I guess, but that brings its own complications apart from the obvious extra disk space. I'd have to think about this one a bit.

Edit - Actually I need to look into this more. Reliable cross platform allocation of non-sparse files seems challenging.
Post edited July 15, 2017 by Kalanyr
avatar
phaolo: If you manage, please try to also add the optional feature to pre-allocate file size to avoid downloads fragmentation.
avatar
Kalanyr: That wouldn't be hard but it would invalidate the quick file size check used by clean to detect download interruption. You'd have to be much more careful to use verify frequently.

t's also possible to allocate the file somewhere else , then only move it on completion I guess, but that brings its own complications apart from the obvious extra disk space. I'd have to think about this one a bit.
Thank you for at least considering it.

Just moving files around wouldn't be a great idea, because it would require an enormous amount of extra time (I'm talking about 700+ games and so hundreds of Gb of data) and would still be less efficient than a defrag.

I remember that some programs with the pre-allocation feature verified the downloads in chunks of Mb.
Small comment here, but not everyone uses the same number of posts per page. For example, the last page in this thread I see is page 17, so I cannot find the places where said discussion occurred. Much easier to use post numbers instead.
avatar
Kalanyr: That wouldn't be hard but it would invalidate the quick file size check used by clean to detect download interruption. You'd have to be much more careful to use verify frequently.

t's also possible to allocate the file somewhere else , then only move it on completion I guess, but that brings its own complications apart from the obvious extra disk space. I'd have to think about this one a bit.
avatar
phaolo: Thank you for at least considering it.

Just moving files around wouldn't be a great idea, because it would require an enormous amount of extra time (I'm talking about 700+ games and so hundreds of Gb of data) and would still be less efficient than a defrag.

I remember that some programs with the pre-allocation feature verified the downloads in chunks of Mb.
Oh, no. Moving a file, on the same partition, is close to free, it just changes some basic meta data (only a very small amount of data is actually physically changed on the disk). It'd be like Steam does , where it pre-allocates a file in a working directory, then fills it in, and only actually moves the completed files when everything is finished. It's also why moving a file doesn't defrag it.

Yeah, chunk based MD5 checking would fix a lot of issues (like the case where sometimes a GOG update changes a file while keeping its name and size the same and utterly borking the archive set after a gogrepo update as a result for one),
Post edited July 15, 2017 by Kalanyr
high rated
Okay , updated my fork with support to download Galaxy installers (for is here: https://github.com/Kalanyr/gogrepo/tree/working2 )

Firstly: I strongly suggest you back up your manifest before using this. It should be backwards compatible (and I've done basic sanity testing) but some changes to the structure of how items were stored was necessary, so I'm not making guarantees it won't mulch your manifest.

When you use the update command use the -installers argument with a parameter chosen from ( galaxy, standalone or both ). I think its fairly obvious which does what. The default is standalone . I see very little point in using both at the moment unless you're an archivist , as the Galaxy install is optional in the Galaxy files so you're just wasting space keeping them and the standalone (whereas you save a small amount per installer using standalone rather than galaxy)

When doing other commands use -skipgalaxy, -skipstandalone and/or -skipshared to skip galaxy installers, standalone installers and files that GOG classifies as both respectively (patches and Linux / Mac files at the moment).

I've changed the default behaviour for -os / -lang a little. The default behaviour is now on update to use WIndows / English, and on all other commands to check everything in your manifest. The ability to use only specified langs / os still exist unchanged (and have actually been added to most command where it makes sense), also equivalents that let you specify languages / os to exclude (skiplang / skipos).

I've also added -ids / -skipid to every command it sorta makes sense for.

Oh and I added -wait support to update (it was already present for download) , this could be useful if e.g you want to wait until like ~4 pm on Friday afternoons UTC to do a full update of your manifest, after GOG have done their weekly update stuff, rather than get a manifest that will turn out to have outdated files in it when you try and download stuff.

Let me know if you find any bugs (I haven't tested backup , import , or Mac downloads at all due to lack of time but I did basic sanity checks on everything else).

This will be all I'm doing this week. I actually spent more time than I intended to on this already.

I'll look into other features like quicker updates / pre allocation / md5 chunking / downloading images over future weekends.

ETA - I also added logging, which is on by default but can be turned of with -nolog . All logging is to a local file called gogrepo.log , nothing is sent remotely. The log file is limited to 100 MiB , and the 10 most recent logs kept as gogepo.log1 , etc. So at most ~1 GiB will be used. You can freely delete any or all log files except for gogrepo.log while it's being written to for obvious reasons. Should be useful for checking why things went wrong.
Post edited July 16, 2017 by Kalanyr
Just made a quick update that fixes Download in case you didn't fully update your manifest before trying to download stuff. This issue (galaxyDownloads and sharedDownloads not existing in the manifest entry leading to key errors) might happen with other commands too. Do let me know if that's the case and I'll fix that too. Don't have to check each right now but I'll fix anything that gets pointed out.
avatar
Kalanyr: Just made a quick update that fixes Download in case you didn't fully update your manifest before trying to download stuff. This issue (galaxyDownloads and sharedDownloads not existing in the manifest entry leading to key errors) might happen with other commands too. Do let me know if that's the case and I'll fix that too. Don't have to check each right now but I'll fix anything that gets pointed out.
I just came across this error when performing an update:

17:43:57 | ( 9 / 760) fetching game details for ai_war_fleet_command...
17:44:09 | error
Traceback (most recent call last):
File "gogrepo.py", line 924, in cmd_update
filter_dlcs(item, item_json_data['dlcs'], lang_list, os_list)
File "gogrepo.py", line 446, in filter_dlcs
filter_downloads(item.galaxyDownloads, item_json_data['galaxyDownloads'], lang_list, os_list)
NameError: global name 'item_json_data' is not defined
avatar
Kalanyr: Just made a quick update that fixes Download in case you didn't fully update your manifest before trying to download stuff. This issue (galaxyDownloads and sharedDownloads not existing in the manifest entry leading to key errors) might happen with other commands too. Do let me know if that's the case and I'll fix that too. Don't have to check each right now but I'll fix anything that gets pointed out.
avatar
itchanddino: I just came across this error when performing an update:

17:43:57 | ( 9 / 760) fetching game details for ai_war_fleet_command...
17:44:09 | error
Traceback (most recent call last):
File "gogrepo.py", line 924, in cmd_update
filter_dlcs(item, item_json_data['dlcs'], lang_list, os_list)
File "gogrepo.py", line 446, in filter_dlcs
filter_downloads(item.galaxyDownloads, item_json_data['galaxyDownloads'], lang_list, os_list)
NameError: global name 'item_json_data' is not defined
That should be fixed in the current build on my repo, I pushed a fix for it a few minutes after my last post and didn't bother mentioning it. I'm still not sure how I made that mistake in the first place. Let me know if that isn't the case.
Post edited July 22, 2017 by Kalanyr
Apologies. The build discussed above didn't upload for some reason. It's uploaded now.

Also fixed the backwards incompatibilities with the other commands and fixed a stupid logic error that meant verification/backup/import would only work if ids were specified (forgot that ids being empty is a special state meaning do not check, not do not allow anything.The perils of having asymmetric mutually exclusive parameters with the same default. )
Post edited July 22, 2017 by Kalanyr