mpdstats is a plugin for beets that collects statistics about your listening habits from MPD. It collects the following information about tracks:
This plugin requires the python-mpd library in order to talk to the MPD server.
Install the library from pip, like so:
$ pip install python-mpd
Add the mpdstats plugin to your configuration (see Using Plugins).
To configure the plugin, make an mpd: section in your configuration file. The available options are:
Ratings are calculated based on the play_count, skip_count and the last action (play or skip). It consists in one part of a stable_rating and in another part on a rolling_rating. The stable_rating is calculated like this:
stable_rating = (play_count + 1.0) / (play_count + skip_count + 2.0)
So if the play_count equals the skip_count, the stable_rating is always 0.5. More play_counts adjust the rating up to 1.0. More skip_counts adjust it down to 0.0. One of the disadvantages of this rating system, is that it doesn’t really cover recent developments. e.g. a song that you loved last year and played over 50 times will keep a high rating even if you skipped it the last 10 times. That’s were the rolling_rating comes in.
If a song has been fully played, the rolling_rating is calculated like this:
rolling_rating = old_rating + (1.0 - old_rating) / 2.0
If a song has been skipped, like this:
rolling_rating = old_rating - old_rating / 2.0
So rolling_rating adapts pretty fast to recent developments. But it’s too fast. Taking the example from above, your old favorite with 50 plays will get a negative rating (<0.5) the first time you skip it. Also not good.
To take the best of both worlds, we mix the ratings together with the rating_mix factor. A rating_mix of 0.0 means all rolling and 1.0 means all stable. We found 0.75 to be a good compromise, but fell free to play with that.