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
DDDespair: Besides using GOG's update tag, is there any other way to check if something has been updated or altered since the last download? Also, would it compare that to the manifest/info files, or would it need the actual downloaded files? I hate the underscored folder names in the gogrepo folder, so I renamed all my backup folders to the proper game name (spacing, caps, etc.) a long time ago. I've mostly used the update and skipknown flags + ids to nab new stuff I've bought and get them in the manifest, but I'm interested in doing a a full recheck to see if I've missed anything.
I think the only way is to check the update thread that users manually compile. But it's quite unfeasible with a big collection.
I just use the full update after N months (don't overdo this) and let gogrepoc compare everything automatically.

I wish the script allowed custom folders, but alas it doesn't.
If you renamed the dirs, at best it will try to revert to the old name, at worst it will move them to "orphaned" and redownload everything.
You can check the possible results by using the -dryrun parameter.
Post edited November 27, 2022 by phaolo
avatar
DDDespair: Besides using GOG's update tag, is there any other way to check if something has been updated or altered since the last download? Also, would it compare that to the manifest/info files, or would it need the actual downloaded files? I hate the underscored folder names in the gogrepo folder, so I renamed all my backup folders to the proper game name (spacing, caps, etc.) a long time ago. I've mostly used the update and skipknown flags + ids to nab new stuff I've bought and get them in the manifest, but I'm interested in doing a a full recheck to see if I've missed anything.
avatar
phaolo: I think the only way is to check the update thread that users manually compile. But it's quite unfeasible with a big collection.
I just use the full update after N months (don't overdo this) and let gogrepoc compare everything automatically.

I wish the script allowed custom folders, but alas it doesn't.
If you renamed the dirs, at best it will try to revert to the old name, at worst it will move them to "orphaned" and redownload everything.
You can check the possible results by using the -dryrun parameter.
I'd recommend setting up a second directory with Junctions (or the Linux equivalent) that use the more human names you want.

I suspect you can't use the manifest to automate this unfortunately because I'm pretty sure many long names have illegal characters under Windows/ NTFS.
avatar
phaolo: I think the only way is to check the update thread that users manually compile. But it's quite unfeasible with a big collection.
I just use the full update after N months (don't overdo this) and let gogrepoc compare everything automatically.

I wish the script allowed custom folders, but alas it doesn't.
If you renamed the dirs, at best it will try to revert to the old name, at worst it will move them to "orphaned" and redownload everything.
You can check the possible results by using the -dryrun parameter.
avatar
Kalanyr: I'd recommend setting up a second directory with Junctions (or the Linux equivalent) that use the more human names you want.

I suspect you can't use the manifest to automate this unfortunately because I'm pretty sure many long names have illegal characters under Windows/ NTFS.
Eh, if you remember I tried that in the past (with simlinks), but it didn't work.
The script couldn't seem to traverse those folders in Windows (unless you changed something afterwards).
Also, such structure would require quite an effort to maintain, when items are orphaned.

In theory, the only proper way could be in the manifest or in an external "path translation" file (maybe the most convenient).
But I doubt you want to attempt such endeavour hehe.

(btw I'm not sure I understand your last remark. If some people use wrong characters or too long paths, the system will simply return an error that gogrepoc could catch, wouldn't it?)
Post edited November 27, 2022 by phaolo
avatar
phaolo: I think the only way is to check the update thread that users manually compile. But it's quite unfeasible with a big collection.
I just use the full update after N months (don't overdo this) and let gogrepoc compare everything automatically.

I wish the script allowed custom folders, but alas it doesn't.
If you renamed the dirs, at best it will try to revert to the old name, at worst it will move them to "orphaned" and redownload everything.
You can check the possible results by using the -dryrun parameter.
avatar
Kalanyr: I'd recommend setting up a second directory with Junctions (or the Linux equivalent) that use the more human names you want.

I suspect you can't use the manifest to automate this unfortunately because I'm pretty sure many long names have illegal characters under Windows/ NTFS.
I figured I would just move them to their folders if necessary. Shame I can't into coding, seems trivial to write a script to do a bulk rename based on the names in the !info files. I just use underscores for illegal characters.

Just to be clear though, does that mean the files themselves are required to check? Or would the manifest alone be able to tell if files don't match the hashes in records? Or does it not track that?
Just fyi, the gogrepoc.py script breaks in Python 3.11 due to a deprecated argument being removed - specifically the flag for universal newlines in open()

For Python 3 it's an easy fix: just replace 'rU' with 'r' (all occurences), as the default behaviour is retained if you don't specify open(..., newline=XX)

Not sure about Python 2 however.

--------------------------------------------
gamesdb = load_manifest()
^^^^^^^^^^^^^^^
File "GOG Installers/gogrepoc/gogrepoc.py", line 327, in load_manifest
with codecs.open(filepath, 'rU', 'utf-8') as r:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen codecs>", line 905, in open
ValueError: invalid mode: 'rUb'
avatar
lupineshadow: Just fyi, the gogrepoc.py script breaks in Python 3.11 due to a deprecated argument being removed - specifically the flag for universal newlines in open()

For Python 3 it's an easy fix: just replace 'rU' with 'r' (all occurences), as the default behaviour is retained if you don't specify open(..., newline=XX)

Not sure about Python 2 however.

--------------------------------------------
gamesdb = load_manifest()
^^^^^^^^^^^^^^^
File "GOG Installers/gogrepoc/gogrepoc.py", line 327, in load_manifest
with codecs.open(filepath, 'rU', 'utf-8') as r:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen codecs>", line 905, in open
ValueError: invalid mode: 'rUb'
This has already been fixed on the latest in the repo (for both python 2 / 3 )
avatar
Kalanyr: I'd recommend setting up a second directory with Junctions (or the Linux equivalent) that use the more human names you want.

I suspect you can't use the manifest to automate this unfortunately because I'm pretty sure many long names have illegal characters under Windows/ NTFS.
avatar
phaolo: Eh, if you remember I tried that in the past (with simlinks), but it didn't work.
The script couldn't seem to traverse those folders in Windows (unless you changed something afterwards).
Also, such structure would require quite an effort to maintain, when items are orphaned.

In theory, the only proper way could be in the manifest or in an external "path translation" file (maybe the most convenient).
But I doubt you want to attempt such endeavour hehe.

(btw I'm not sure I understand your last remark. If some people use wrong characters or too long paths, the system will simply return an error that gogrepoc could catch, wouldn't it?)
I actually meant to create a separate fake folder with folders with human names that each junction to the real ones in the gogrepo folder, so that the script is completely unaware of it. You'd have to manually patch game folder rename junctions but those are pretty rare (the only one that seems to happen somewhat reliably is GOG being unusure if they want to use the _game exension on folders)

Hmmmmm. Window should be able to traverse junctions created in Linux for the native Windows file systems (at least for stuff done in the last couple of years since NTFS R/W support in Linux was moved to stable), and WSL should be able to handle Linux symlinks for the filesystems it supports, but outside that it would depend on whatever third party driver you're using to mount the system.

Yes, you'd get a failure but if you really want human readable names in an automated way a failure isn't really useful, you can set some kind of fallback but it's imperfect.
avatar
phaolo: I think the only way is to check the update thread that users manually compile. But it's quite unfeasible with a big collection.
I just use the full update after N months (don't overdo this) and let gogrepoc compare everything automatically.

I wish the script allowed custom folders, but alas it doesn't.
If you renamed the dirs, at best it will try to revert to the old name, at worst it will move them to "orphaned" and redownload everything.
You can check the possible results by using the -dryrun parameter.
avatar
DDDespair:
avatar
Kalanyr: I'd recommend setting up a second directory with Junctions (or the Linux equivalent) that use the more human names you want.

I suspect you can't use the manifest to automate this unfortunately because I'm pretty sure many long names have illegal characters under Windows/ NTFS.
avatar
DDDespair: I figured I would just move them to their folders if necessary. Shame I can't into coding, seems trivial to write a script to do a bulk rename based on the names in the !info files. I just use underscores for illegal characters.

Just to be clear though, does that mean the files themselves are required to check? Or would the manifest alone be able to tell if files don't match the hashes in records? Or does it not track that?
For a scenario like this, you're really looking at the "game" / folder level because as long as gogrepoc can find and identify the game context it's supposed to be handling it can deal with the files inside it, though that might be by exiling them all to the graveyard and redownloading , if it can't work out what they are.
Post edited November 28, 2022 by Kalanyr
avatar
phaolo: Eh, if you remember I tried that in the past (with simlinks), but it didn't work.
The script couldn't seem to traverse those folders in Windows (unless you changed something afterwards).
Also, such structure would require quite an effort to maintain, when items are orphaned.

In theory, the only proper way could be in the manifest or in an external "path translation" file (maybe the most convenient).
But I doubt you want to attempt such endeavour hehe.

(btw I'm not sure I understand your last remark. If some people use wrong characters or too long paths, the system will simply return an error that gogrepoc could catch, wouldn't it?)
avatar
Kalanyr: I actually meant to create a separate fake folder with folders with human names that each junction to the real ones in the gogrepo folder, so that the script is completely unaware of it. You'd have to manually patch game folder rename junctions but those are pretty rare (the only one that seems to happen somewhat reliably is GOG being unusure if they want to use the _game exension on folders)

Hmmmmm. Window should be able to traverse junctions created in Linux for the native Windows file systems (at least for stuff done in the last couple of years since NTFS R/W support in Linux was moved to stable), and WSL should be able to handle Linux symlinks for the filesystems it supports, but outside that it would depend on whatever third party driver you're using to mount the system.

Yes, you'd get a failure but if you really want human readable names in an automated way a failure isn't really useful, you can set some kind of fallback but it's imperfect.
Ah, so the opposite of what I had in mind back then:
https://www.gog.com/forum/general/gogrepopy_python_script_for_regularly_backing_up_your_purchased_gog_collection_for_full_offline_e/post924
Your solution seems more difficult to maintain tho.
But anyway, it's still a bit of an ugly trick and not ideal.

Maybe next time I'll give another try with the script with symlinks tho.

Btw my game folder structure idea is probably something like this:
- custom year range > system > category > title > store > (files)
- example: 1980-2000 > PC > FPS > Heretic 01 > GOG > (files)
Post edited November 28, 2022 by phaolo
gogrepo or gogrepoc ?

https://github.com/eddie3/gogrepo
https://github.com/Kalanyr/gogrepoc

What is the difference?
avatar
Lebostein: gogrepo or gogrepoc ?

https://github.com/eddie3/gogrepo
https://github.com/Kalanyr/gogrepoc

What is the difference?
The one by Eddie is the original and older, but with a fairly recent bugfix.

The one by Kalanyr is a fork of that original and has many more features.

Which one you use depends on your requirements. Most seem to use Kalanyr's fork these days, and he is regularly present here in this thread to give help etc.
avatar
Lebostein: gogrepo or gogrepoc ?

https://github.com/eddie3/gogrepo
https://github.com/Kalanyr/gogrepoc

What is the difference?
Gogrepoc.

See Timboli's answer for the difference.
Post edited December 03, 2022 by mrkgnao
FYI: Update flags seem to be working again, gogrepoc is seeing them when it checks now, worked twice this week!
Post edited December 07, 2022 by Starkrun
would it be possible for the script to flag previous versions of a download and old patches for removal during a "clean" cycle? I have a number of games with multiple installers backed up, or the most recent installer with old patch installers as well.
Does anybody have the same problem as I do?

I owned Saints Row IV: Game of the Century Edition for some time now, which recently became Saints Row IV: Re-elected.
But for some reason, Gogrepoc dos not reflect that change and game in my manifest still goes under moniker "saints_row_iv_game_of_the_century_edition" instead of "saints_row_iv_reelected".

Is there any way to force the manifest to update that given game correctly?
Post edited December 14, 2022 by Tarhiel
avatar
Tarhiel: Does anybody have the same problem as I do?

I owned Saints Row IV: Game of the Century Edition for some time now, which recently became Saints Row IV: Re-elected.
But for some reason, Gogrepoc dos not reflect that change and game in my manifest still goes under moniker "saints_row_iv_game_of_the_century_edition" instead of "saints_row_iv_reelected".

Is there any way to force the manifest to update that given game correctly?
I don't know about that error, but if you're sure that the ID corresponds, maybe you could edit or remove the game entry in the manifest.
Then scan with gogrepo again.
Or try a full scan (after the sale), since it's useful after some time anyway (if you have the enough disk space and no data cap).
Post edited December 14, 2022 by phaolo
avatar
Tarhiel: Does anybody have the same problem as I do?

I owned Saints Row IV: Game of the Century Edition for some time now, which recently became Saints Row IV: Re-elected.
But for some reason, Gogrepoc dos not reflect that change and game in my manifest still goes under moniker "saints_row_iv_game_of_the_century_edition" instead of "saints_row_iv_reelected".

Is there any way to force the manifest to update that given game correctly?
You can either do a scan by ID (use the -ids parameter) using the numeric identifier (which you can get from the info.txt) which should update the long/short name, or a scan by ID using the folder name for the game , if there's no match on your GOG side shelf it will mark the entry as deprecated and remove it, which will then orphan the entire contents on the next run and you can then use -ids saints_row_iv_reelected to get the entry for the new version.

I think I may own that game so I'll do some testing in a moment.

ETA -
Hmmm, actually Saints Row IV doesn't appear visible to me, probably because I'm Australian and IIIRC the Australian version needed edits to get a non-RC rating here, so I can't look into this.
Post edited December 14, 2022 by Kalanyr