msolefonte / celes

Celes is an open source file scraper that obtains and stores game achievements, whatever the origin
https://www.npmjs.com/package/@achievement-watcher/celes
GNU General Public License v2.0
4 stars 0 forks source link

Add support for blacklisted games #5

Closed msolefonte closed 3 years ago

msolefonte commented 4 years ago

Games should be blacklisted by appid and platform, being source optional.

xan105 commented 4 years ago

Please put this on hold. I've to explain how it currently works and why. Why It would have to change. Debate on how we should proceed onwards for the implementation of this feature into celes.

Wall of text coming at a later date

msolefonte commented 4 years ago

In my mind, Celes launch config should include a variable blackilist: IBlacklistedGame[], where IBlacklistedGame should be {appid: string; source: string; platform: string}. That way, if, in the showcase, you could mark some games as blacklisted, updating the list passed to Celes. Then, during the scrapping, if appid, source and platform coincide, the game is skipped. Also, source could be optional.

Waiting for the wall of text.

msolefonte commented 4 years ago

Any update on this @xan105?

xan105 commented 4 years ago

Ok the genesis is a feature request to remove a game from the 'showcase'. Since I'm parsing at each app startup I just did a quick blacklist to remove an appid to being processed.

This blacklist has been repurposed to filter out 'bullshit' appid like 0 or eg: 161545481812485 (This happens A LOT; Logs don't lie) and appid known to not have any achievements

Why because every network request is costly and it significantly boost startup time to filter out these 'rubbish'.

Due to the way api-server v1 works failure to fetch data blacklist an appid to be reviewed by a another script later on (try) to fix it.

The blacklist is server side and it's downloaded by AW each time in addition to the local blacklist.


I wasn't going to have a blacklist server side for api-server v2 as it was troublesome to handle and I don't think I'll have problem retrieving data anymore ( better understanding, steam network, multiple redundancies)

Also, achievement-watcher/achievement-watcher#52 (Unverified)

Before you join in I was thinking to refactor the blacklist to be client side only.

If api-server returns ach data -> ok (cache it) if returns error code like timeout, etc -> do nothing (try again later) if returns 404 (no achievement) -> check with another api that game is released if yes -> blacklist this game because it has no achievement. if not yet released do not blacklist it (yet) probably playing a version before retail is released 🙃

user would still have option to manually add an appid to the blacklist (currently it's appid only; Not a combination of appid/source)

Settings > blacklist would have a better ui where blacklisted appid would have been listed with name, appid, reason and a button to remove it as well as a button to reset all the blacklist


Everything is up for debate as it now relates to celes (and api-server v2).

msolefonte commented 4 years ago

Agree to have it only client side but not a thing to debate here in Celes. It should not affect how it works.

I think that it would be cool to have two kind of blacklists: one fixed (blacklist.json, mirror of a Github file updated by the showcase when available) and other dynamic based on each user. That should be updated both by the same Celes and showcase, according to user selections.

About UI, I would prefer right click over a game -> Blacklist / Blacklist version. Also Settings, blacklist for deletions. There can be collisions that way but not a real problem because user can just add it again if remotely happens. That means that there is no need to create getBlacklist and setBlacklist methods.

msolefonte commented 4 years ago

Have been giving a though to it. I have a question about this:

if returns 404 (no achievement) -> check with another api that game is released if yes -> blacklist this game because it has no achievement.

I would rather not blacklist the game but just showing it without achievements. Playtime should still be available and it is less confusing than making the user think that the game has not been properly loaded.

msolefonte commented 4 years ago

@xan105 Cloud ha stopped returning Blacklists. Now it's all internal server error. It's impossible to test it in the current status.

xan105 commented 4 years ago

/steam/GetBogusList Returns 410,gone since there is no blacklist anymore

/steam/ach/:appid I found a typo last night but only fix it this morning.

Returns 404,not found when there is no achievement or the appid doesn't exist. Returns 400,bad request if appid is invalid

msolefonte commented 4 years ago

On hold till Cloud is redone and this is properly decided.