Solaire / GLC

Lightweight, console-based, tool which automatically detects installed games and displays them to the user.
GNU General Public License v3.0
17 stars 3 forks source link

Support for web-based platforms and connecting to services #10

Open Solaire opened 3 years ago

Solaire commented 3 years ago

Should the app be able to connect to online services (such as Humble bundle, Riot games, etc)? I am unsure of the work required and the overall benefit.

Also should the app support signing in into clients such as steam and get a list of all games for the user. This would in theory allow the app to manage all of the user's games and perhaps even allow installation.

Marking this a question since I am unsure what overall benefit there is to this feature as well as the required work (I'm not even 100% sure this is possible with each and every platform, though I think PlayNite does something like that)

Nutzzz commented 3 years ago

For Steam, a quick-and-dirty solution would be:

  1. Only works if the user's profile is public; send them to this URL to change: "https://steamcommunity.com/my/edit/settings"
  2. Request the user's username, and collect the data from this page: "https://steamcommunity.com/id//games/?tab=all"
  3. Send the user to "steam://install/" to launch Steam and install any particular game.
Nutzzz commented 3 years ago

Implemented Steam method above in this commit. Unfortunately, DLCs end up in the list.

EDIT: Note this is a just a start, since the internal databases were sufficient for Amazon, itch, Indiegala, and Paradox [EDIT 2: also GOG], and I figured I'd slap this together since it was easy. Now I'll take a look at the various web APIs, and come back to Steam to do it right.

EDIT 3: In PR #56 , I added a commented-out experiment with the Steam API (via SteamWebAPI2), but it appears to just complicate things (e.g., the user must set up an API key) and it doesn't make a difference from using the website (i.e., profile must still be public).

Nutzzz commented 2 years ago

The Origin API was implemented in PR #56 , as well as an internal database solution for Epic.