Banshee is likely the best music player available for Linux. It has the ability to automatically generate a score for each song based on wether you usually listen to it or skip it. You can then have Banshee play random tracks, but you'll hear more of the songs that score better ... and only rarely hear those that you usually skip.
The problem that I have is that Banshee is running on 4 computers in my house, and only my laptop knows my scores. When I play music on the desktop, I end up listening to boy-bands and country music (my wife's music). I want my desktop to know my scores, as well as my wife's scores, so it will play music that we both like - a common, merged Banshee experience.
My idea is to have a script run whenever my laptop connects with my home network. This script would do the following:
* Update Banshee to use my home library and database.
* Calculate playcount and skipcout since last sync and update main database
* Average score from laptop with 2x score from home: laptop+(home*2)/3
* select 100 top scored songs from home and make the laptop library and database match