Adishone / DoIOwnThisGame

Repository for Do I Own This Game browser addon
0 stars 0 forks source link

Add Steam API library import #1

Open Jpxe opened 1 year ago

Jpxe commented 1 year ago

Hi I would like to try this extension but since I use Linux there doesn't seem to be a way to import my games? So It would be great if you could add another method to get the games, maybe using the Steam API.

Maybe like this: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetOwnedGames_.28v0001.29

Adishone commented 1 year ago

Hello, @Jpxe I was using this approach in version 1.0, but it is kinda inconvenient that you need to generate your own Steam API Key as without it, API throws unauthorized errors. So two options for you:

  1. I can also add import from Steam Api to extension, but you would need to use your own API Key (as stated in docs: ie the WebAPI key you are using is linked to the steamid you are requesting). It is not rocket science, but needs some effort to generate it.
  2. You could create .csv file with one column (first row should be a header that will be ignored) with all your games and load into extension. Simple way to get list of games is to copy table from here: https://store.steampowered.com/account/licenses/

If first option is better for you, let me know I can bring it back if needed.

Adishone commented 1 year ago

@Jpxe I found some free time and added Steam Api integration back, there's a version 2.4 in firefox addons, feel free to use it. Closing issue because of that :)

Jpxe commented 1 year ago

Import worked, thanks a lot :)

The imported games are all in lowercase which seems to create some mismatches for some games, see the blue ones here: Screenshot_20230901_080217

Adishone commented 1 year ago

Import worked, thanks a lot :)

The imported games are all in lowercase which seems to create some mismatches for some games, see the blue ones here: Screenshot_20230901_080217

Bought same bundle just to debug it :P It looks slightly better for me, so probably Steam Api is returning something differently: image

Problems on mine are: Orange Cast: Sci-Fi Space Action Game | on steam it is called Orange Cast A Demon's Game | on steam it is called a demon's game - episode 1

You can ignore lowercase, I just wanted to avoid making it lowercase every time when comparing so I just saved it as lowercase, but games from bundles are also converted to lowercase when comparing, as I found a lot of issues because Humble Bundle often is using upper case in every word at the start. You can check what were your problems by going to options page and checking games list vs what you see on Indie Gala. Unluckily I already experienced a lot of discrepancies between what Bundle Sites are showing and what comes from Steam/GoG/Epic etc., I can't really do anything about it, sorry, that's why similiar games feature was implemented.

Jpxe commented 1 year ago

So on Indiegala it's "Orange Cast: Sci-Fi Space Action Game" and on Steam for me it's the same name. Looking at steamdb.info it seems the App Name is "Orange Cast" but the Store Name is the one matching Indiegala: https://steamdb.info/app/1194050/ Is it possible to get the "Store Name" from the API, maybe that would result in better matching?

As for Ninja Roquinexu, it matches it with "You own game with similiar name: ninja senki dx". What's a bit weird is that I do actually own Ninja Roquinexu. It doesn't seem to show up in the list when i load games from Steam API. Screenshot_20230908_143232.

Weapons Genius and Magic Forest are having the same problem: I own the games but they don't show up in my games list in the extension. I did try a "clear browser storeage" and reloading the games after. So the list should be up to date, the extension says: "Last update date of database: 2023-09-08 14:27:59". My lists ends with this weird icon and circles, if that's related, a bug or something?

Screenshot_20230908_144109

Jpxe commented 1 year ago

I'm guessing it's something with the import. I have a lot of games and games with special characters and stuff so I'm not surprised if there's some problems with the import. So from:

Adishone commented 1 year ago

@Jpxe Initial thoughts after some research: I intentionally excluded free games as I don't believe that there is a chance that they would be included in paid bundle. Seems like Store Name is added by Steam DB, as it is missing in newest additions (for example https://steamdb.info/app/2004590/charts/). I checked steam api documentation and GoG Galaxy database there was nothing like store name and as Steam DB doesn't expose it's API - it is rather hard to use it.

It is known that steam returns game names differently: image

I will change approach of where do I get game names from, it should help a little as at least for Orange Cast it seems to fix it. I believe that in your case we could be hitting some limitations of API, that it returns only parts of your games, but if I change approach it should be better. I'm adding it to my TODO list, please give me few days for that change.

Adishone commented 1 year ago

@Jpxe Played a bit with that different approach and unluckily Steam blocks me pretty fast, after making 50 requests or something like this. It would take ages to gather data this way for high amount of games, so really sadly I must say that I can't really make loading it from Steam API better sorry.

Jpxe commented 1 year ago

Thanks for taking a look! There are some other websites and extensions that fetch a users Steam library, most without a user provided API key. Might be worth looking at how they do it.

A few examples:

Adishone commented 1 year ago

@Jpxe Thanks for repositories. I had a look around, but both are using endpoints that returns only steam id of the games without names. It would be possible to use it at indie gala, but not anywhere else. Because of that I won't use it. I read some posts that Lutris is kinda popular across Linux user, I could try to add import from that app, but not sure if that would help in your case?