Hey hey
Nice idea. Thanks for all the work you already done on creating this script steegy
I know this topic has been inactive for a while but I had an idea on a similar way to rate songs. What about using a formula similar to this:
Playcount * (Library Age^(1/2)/Dateinlibrary^(1/2)) * (1+(0.5-0.days since last play).
Im not sure if this is possible, or what type of results it would produce, but my thinking is that it doesnt use existing ratings so this script could be used to write directly to the rating. Also I think any rating should take into account age in library, as you have already explained because songs with high play counts that are "newer" should clearly have a higher rating than a song with the same count that you have had for 5 times as long! The last part of the formula is just a multiplier to increase the rating if the song has been played recently, it will increase the rating by a maximum of 1.5 if it has been played in the last 50 days.
The actual numbers above could be tweaked, but here is an example of the results it would generate.
Eg 1:
Play count: 41
Days in library: 72 days
Library age: 180 days
Last played: 15 days ago
Rating = 41 * (180^(1/2)/72^(1/2)) * (1.+(0.5-0.15))
= 87.5
Eg 2:
Play count: 10
Days in library: 231
Library age: 320 days
Last played: 62 days ago
Rating = 10 * (320^(1/2)/231^(1/2) * (1.0+(0.5-0.5))
= 11.7
From these two examples it seems to produce pretty good results for how I would like my songs rated? The ageoflibrary/daysinlibrary are both square rooted to keep the number a lot smaller and still keep the ordering the same, if that makes sense.
Would it be possible to make a script like this? It would also be good if the resulting ratings could be rounded to the closest multiple of 10 with an upper cap of 100, as according to lowlander the MM database stores ratings in multiples of 10.
I think this might be a cool way to rate songs, the only problem I could see with the current formula is that people with really old databases might get some huge ratings, so one more component might need to be added to the formula to weight for the age of your database. For example if somebody has a 1500 day old database and has just added a song to the library so its days in library are 1, his age multiplier will already be 38 and if he plays the song 3 times its rating will be 171. Similarly if you have a five year old database there may be songs you have played over 100 times which will obtain a 5 star rating no matter what.
Im sure this could be sorted out though. My solution would be to divide the playcount by a multiple depending on the highest played song in the library. Such as, if highest playcount is above 100, divide by 2, above 200, divide by 4, above 300, divide by 6 and so on.
Let me know what you guys think, sorry this post was so and complicated but hopefully it might be a good idea!