Kapiainen / Lauhdutin

A Rainmeter skin for launching games.
MIT License
67 stars 8 forks source link

About GOG #135

Closed BanCrash closed 3 years ago

BanCrash commented 6 years ago

Hello! I see on the to-do list that you are planning to add suport for gog wishlist. Could be added the option to have uninstalled games now? With the new profile there is an option to show them, and there is a privacy option to set them to "all visitors".

image

I assume that if wishlist could be parsed maybe games page could be parsed too, but maybe I'm wrong.

The web to see games on a public profile is: https://www.gog.com/u/INSERT_PROFILE_HERE/games . If the profile is privated, a warning will be showed instead games:

image

Kapiainen commented 6 years ago

The wishlist thing is just an idea that I'm considering.

The source of the wishlist page includes all of the necessary information whereas the games page does not. It looks like the games page uses JavaScript to get the information rather than including them in the page source.

BanCrash commented 6 years ago

Ouch, okay! Then will wait until a way to accomplish that appears then. Thanks for the answer.

Kapiainen commented 6 years ago

I did a quick test with PhantomJS, which is a headless browser, and was able to successfully get the necessary information. Using PhantomJS would add an optional requirement, but at least installing it is as simple as placing one executable in the skin's @Resources folder. Chrome and Firefox have headless modes so I'm going to see if I can use them to get the necessary information. It might be possible to use a browser that is already installed and have PhantomJS as a backup in case neither browser is installed.

BanCrash commented 6 years ago

Glad to read that! Hope it will work so we can have all possible games without many complications!

Kapiainen commented 6 years ago

I'm having issues with Chrome's headless mode and I get the impression that both Chrome's and Firefox's headless modes are quite limited unless one uses drivers, which require additional, large dependencies.

PhantomJS seems to be the way to go due to the simplicity of installing and using it. The user would basically just have to input their profile name into a string setting and then the skin would generate the JavaScript file that PhantomJS executes. PhantomJS then loads the profile page, evaluates the JavaScript in the profile page, and outputs the contents to a file that the skin can parse to get product IDs.

BanCrash commented 6 years ago

Well, at least sounds easy for the final user (and not easy at all for the programmer).

Kapiainen commented 6 years ago

I just pushed commits to implement downloading and parsing GOG profiles to find games associated with an account. I still need to update the readme and have a look at extracting the hours played from the profile. If you want to test it out, then you'll need to grab PhantomJS and place it in the @Resources folder.

BanCrash commented 6 years ago

Perfect! Testing this matter I found another unrelated issue.

I said it's unrelated because I try this commit from 5 days ago for example and have the same issue. However trying last release doesn't happen.

Steps to replicate: Delete games.json, backups and settings.json. Open settings.ini, enable for example Windows Shortcut Platform and then Save and close.

About this matter, I tested it and seems to work great! Thanks, nice job!

Kapiainen commented 6 years ago

Just pushed a commit that should fix that.

BanCrash commented 6 years ago

Perfect. Thanks!

Kapiainen commented 6 years ago

I pushed commits that implemented parsing the hours played from the profile.

BanCrash commented 6 years ago

I don't know why I thought this is completed. I'll let this open until next release.

I just tested and works great. Thanks!