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 )
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.
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.
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.
DDDespair: 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.
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.