eddie3 / gogrepo

Python-based tool for downloading all your GOG.com game and bonus collections to your local computer for full offline enjoyment.
481 stars 114 forks source link

"Skip games marked as hidden" function not working #52

Open ToxiClay opened 3 years ago

ToxiClay commented 3 years ago

The update command says that it will skip games marked as hidden, but it doesn't appear to do so. I've marked various demos as hidden, but they still appear in the manifest and as missing files when using the verify command.

ToxiClay commented 3 years ago

@eddie3 Gentle bump on this -- is this something that you're aware of?

# Parse out the interesting fields and add to items dict for item_json_data in json_data['products']:

skip games marked as hidden

            if item_json_data.get('isHidden', False) is True:
                continue

This code doesn't seem to actually make the program skip hidden games. I verified this by deleting and regenerating the manifest; games that are marked as hidden in my library were scanned and logged.

Stripping , False from the conditional didn't seem to fix anything.

jibsaramnim commented 2 years ago

I recently stumbled upon this project and am giving it my first trial, so I'm not the creator but thought I'd chime in;

I marked multiple demos/free games (how do those even end up in your library? I certainly never added these :thinking: ) as hidden. I then ran gogrepo with a debugger to see what's going on exactly. It does seem like the isHidden check works as intended, at least on my end.

Are you running the update command with any additional arguments? It might be worth to try with as few flags as possible just to see if that helps solve your problem. If it helps, in my test I ran it with -os windows linux mac as-well as without this argument altogether. I didn't use any other arguments.

ToxiClay commented 2 years ago

Are you running the update command with any additional arguments?

No, I'm running with zero arguments, with several games marked as hidden through GOG Galaxy. There does not seem to be functionality at GOG's website to do so.

Despite this, games marked as hidden in GOG Galaxy are still showing up in the verify output as missing. I even checked to see if one of my edits to the verify function was causing it to misreport, but it's not so.

Edit: just to make absolutely certain, I've just blown away the entire manifest and am regenerating it, though the update command ought to regenerate it anyway.

How are you marking the games as hidden?

jibsaramnim commented 2 years ago

I used the "hide game" option that can be found in the sub-menu (or "more" menu on the expanded game view) on your account page:

image

If you use the hide feature in GOG Galaxy, do the games end up hidden on this account page view too for you? In my case they all appear under the "hidden" filter view (found by clicking on the "my collection" title at the top of the list). If not, perhaps GOG Galaxy's hide feature is something separate? I don't actually use GOG Galaxy as there's no native linux version for it, so I can't check this myself.

Edit: Actually, I think you're right. Somehow I do think hidden games end up in the manifest file after all. I'm running an initial download at the moment and I just checked the manifest file and it contains all the games I had marked as hidden. How odd.

Edit 2: @ToxiClay are you by any chance running this tool using krautit's docker container?

ToxiClay commented 2 years ago

I used the "hide game" option that can be found in the sub-menu (or "more" menu on the expanded game view) on your account page:

Ah! That's it! That's the reason. Or, at least, possibly? For at least one title?

And no, I am not running the tool through a docker container, but rather natively through Windows.

E:\GOG Repository>gogrepo.py update -id cris_tales_demo
01:27:55 | loading local manifest...
01:27:55 | fetching game product data (page 1)...
01:27:56 | fetching game product data (page 2 / 2)...
01:27:57 | game id "cris_tales_demo" was not found in your product data
01:27:57 | --
01:27:57 | total time: 0:00:01.282000
01:27:57 | exiting...

E:\GOG Repository>gogrepo.py update -id cris_tales_demo
01:28:11 | loading local manifest...
01:28:12 | fetching game product data (page 1)...
01:28:12 | found "cris_tales_demo" in product data!
01:28:12 | (1 / 1) fetching game details for cris_tales_demo...
01:28:18 | saving manifest...
01:28:18 | --
01:28:18 | total time: 0:00:06.512000
01:28:18 | exiting...

E:\GOG Repository>gogrepo.py update -id cris_tales_demo
01:28:27 | loading local manifest...
01:28:27 | fetching game product data (page 1)...
01:28:28 | fetching game product data (page 2 / 2)...
01:28:28 | game id "cris_tales_demo" was not found in your product data
01:28:28 | --
01:28:28 | total time: 0:00:01.136000
01:28:28 | exiting...
jibsaramnim commented 2 years ago

Ah! That's it! That's the reason. Or, at least, possibly? For at least one title?

Yeah I think that's it. I am re-running the update command locally (both using the docker container as-well as directly on my machine) and it's properly honoring the hidden flag. I think I jumped the gun with my earlier update, it does seem to work correctly if the website's hidden option is used.

So.. is GOG Galaxy's hide option just completely separate? What an odd design choice that would be :thinking:

ToxiClay commented 2 years ago

So.. is GOG Galaxy's hide option just completely separate? What an odd design choice that would be 🤔

That...almost has to be it. Like, I can hide a game that I haven't installed, and it feels like that change should propagate back to GOG proper. It's super bizarre the way they've chosen to do it.

I'll be sure to include a note to this effect in my copy of the repo tool before I make another PR.

eddie3 commented 1 year ago

Will ensure this works in my rewrite. Thanks for reporting.