tryton-vanmeer / ProtonDB-for-Steam

Shows ratings from protondb.com on Steam
GNU General Public License v3.0
168 stars 3 forks source link

update to use SPCR API #5

Closed bdefore closed 5 years ago

bdefore commented 5 years ago

hi @tryton-vanmeer thanks for making this plugin. i'm the developer of SPCR and wanted to give you a heads up that the site now provides a formal API that this should hook into.

The data/reports/app endpoints that this is currently relying on will soon be retired since I'm renovating the data model internally and want to protect data consumers, such as this plugin, from ongoing changes.

An example is here: https://spcr.netlify.com/api/v1/reports/summaries/9940.json .. you can use confidence and tier in the response itself rather than calculating on your own.

guixxx commented 5 years ago

Thanks a lot for this, @bdefore! I'm not the owner of this project, but I made an userscript based on this project, for people using Chromium-based browsers (or any other browser compatible with Violentmonkey / Greasemonkey / Tampermonkey) since this extension is not (yet?) available on the Chrome Web Store.

tryton-vanmeer commented 5 years ago

@bdefore Thanks for the heads up, I will definitely update to use the API.

DanMan commented 5 years ago

@bdefore Is that now all the data you're willing to publish or is there more to come? I've noticed that the test results aren't filed under the Steam AppID anymore but under some ID of your own… which broke my Userscript.

bdefore commented 5 years ago

@DanMan for the moment yes, is there something specific you need access to? is your userscript available somewhere?

DanMan commented 5 years ago

@bdefore Yes, on Openuserjs.

I was already working on adding more features to it, but without access to the test results (that were provided to you for free), I can't. I get that you want control about your server bandwidth, but cutting the cord just like that is not exactly in the spirit of open source/data.

bdefore commented 5 years ago

@DanMan ok, i understand. unfortunately, the /data prefixed endpoints were not intended to be consumed by other services. there's still a lot of development happening and i would rather not be at risk of breaking them, hence the move to a versioned /api endpoint that serves as an ad hoc data contract.

access to the reports themselves is best achieved by linking them to SPCR. hopefully that suits your needs. maybe down the line there could be a dependable api for these too but it would come at the risk of fragementing where people go for the information.

i am working towards open sourcing the web app, and it's there where i'd welcome additions to the way this data is presented.

DanMan commented 5 years ago

@bdefore How about you don't care about breaking unintended usage, but also don't prevent others from using the data as they see fit? I surely won't complain, if you decide to do things differently, but I do mind when you start getting possessive.

You basically cut everyone off from using the test results, and you did so on purpose by obfuscating the URL. What started out as a huge community effort has now effectively turned into a benevolent dictatorship. I wonder why, because the reasons you mention sound pretty flimsy to me.

I don't remember anyone putting you in charge of this. You volunteered, and did a great job thus far - thanks for that. But this last move rubs me the wrong way.

CuriousTommy commented 5 years ago

@bdefore My only gripe with the current implementation is that there isn't a way to specify a specific proton version or have it give back results based on X criteria (Example: Give a rating based on 10 recent reports).

DanMan commented 5 years ago

My only gripe with the current implementation is that there isn't a way to specify a specific proton version or have it give back results based on X criteria (Example: Give a rating based on 10 recent reports).

I have that feature basically ready to go in my Userscript, but apparently it's not going to happen because he doesn't want it to.

bdefore commented 5 years ago

@CuriousTommy I plan to include a trendingTier property at the same endpoint matching what you can see on SPCR. it was acting inaccurately on my first pass, so it's not live yet.

bdefore commented 5 years ago

@CuriousTommy @tryton-vanmeer i've added trendingTier and provisionalTier to the API.

The algorithm for a game's trending state is currently derived from the most recent third of reports. The algorithm for whether a game's rating is deemed 'pending' is if it has received at least three reports submitted with GPU drivers meeting official minimum requirements as defined here: https://github.com/ValveSoftware/Proton/wiki/Requirements

Both algorithms are subject to change. They will be refined over time.

All games with at least one report meeting minimum requirements will provide both a tier and a trendingTier. An example of one where these differ at this time is Cuphead: https://spcr.netlify.com/api/v1/reports/summaries/268910.json

Note the lack of a provisionalTier in this case.

A game lacking enough reports to be conclusive will have tier and trendingTier of pending while providing a provisionalTier with where it seems to be headed. An example of one at this time is Hitman 2: Silent Assassin: https://spcr.netlify.com/api/v1/reports/summaries/6850.json

Note that games without any reports meeting minimum specs will respond with a 404.

@CuriousTommy this doesn't entirely meet your request for accepting parameters for a custom timeframe or a proton version. I've added these to my notes for potential inclusion in the future.