mmatyas / pegasus-frontend

A cross platform, customizable graphical frontend for launching emulators and managing your game collection.
http://pegasus-frontend.org
Other
1.22k stars 111 forks source link

[API] Make games "rating" field writeable #978

Open valsou opened 2 years ago

valsou commented 2 years ago

Hi,

it would be nice to make the games rating field writeable. In order for the themes to play with it and enhance user experience.

mmatyas commented 2 years ago

I suppose the same could be said about pretty much any of the fields – tags, files, launch commands, etc. But unlike favorites or play time, these are also fields in the metadata file; how should they be stored? If Pegasus maintains its own list of changes, the result will be inconsistent with the user's files, but since game info can come from multiple sources, there isn't a single place to write them back either.

mmatyas commented 2 years ago

While writing this I had an idea for the first option, that might work in a generic way, making most fields writable. The issue is still the inconsistency with the user files, but perhaps a good documentation could help with that.

valsou commented 2 years ago

Maybe a userRating field specific to Pegasus ? If we consider the rating field as the consensus/press rating. Like iMDB does.

I don't mind inconsistency, especially for ratings, but i must confess i don't use any provider source. It would be enlightening to have user feedbacks, those who use Pegasus in addition with another frontend (and the same games in each).


Not related with rating, but taking a look at stats.db in plays table i see that there are multiple rows for the same game. I see the point if we want to have info about each play sessions but this is not used. Shouldn't rows be UPDATED instead (incrementing duration field) ?

mmatyas commented 2 years ago

What I was thinking about is to create a new metadata file in Pegasus' own config/metafiles/ dir, containing only the changed fields of the games. This would still retain the simple readability and editing of the text files (as opposed to eg. databases), and would enable writing on all fields.

Shouldn't rows be UPDATED instead (incrementing duration field) ?

The idea was to eventually allow stats like "hours played in the last 7 days" and such. The implementation is not there yet, but if it would be on one day, the data is there.

sofalzone commented 2 years ago

I had a similar idea for a metadata file that allows user input, similar to the way the "favorites" file works.

User edited tags would be especially useful. The way I understand the Tags field to work, you can edit it, but it then doesn't carry over after a restart. If you can record user input tags, it would make it really easy to make custom collections and search for games that aren't based on the metadata fields. For instance, I could give the end user the ability to add a custom tag (e.g. "MyRPGs") to several games, and then give them the ability to make a new collection that filters the master collection based on this filter. This would allow fully customizable collections without having to rely on preset info.

Another application for this would be to fix the stats associated with non-metafile game sources (i.e. Steam games). These seem to reset every restart.