/fresher

Attaches a 'freshness' score to the music you listen to, and recommends songs based on freshness

Primary LanguagePython

Fresher

Fresher is a tool that is meant to attach a 'freshness' score to the music you listen to. If I really like a song I tend to listen to it incessantly until it's not good anymore. So, in an attempt to enjoy music longer, and give older tracks that have slipped your mind another chance, Fresher will automatically demote songs you listen to a lot, promote songs you don't hear often, and allow you to manipulate scores manually to control when you hear a given song again.

Fresher will populate a data store with all of the song titles contained in a given directory, and assign each song a score of 100. As you listen to a song, it decreases the freshness, and distributes the freshness among other songs.

Usage

user@shell$ ./fresher.py --help

usage: fresher.py [-h] {show,repopulate,next,upvote,downvote} ...

positional arguments:

{show,repopulate,next,upvote,downvote}

                    commands

show                Dump the score dictionary

repopulate          Repopulate and reset the score dictionary

next                Samples the list of songs and suggests a new one

upvote              Upvote the currently playing song

downvote            Downvote the currently playing song

optional arguments:

-h, --help show this help message and exit

Design goals

I'm not sure whether keeping freshness constant is a worthy design goal, but I'll try it and see how it goes. Every operation affecting the freshness of a song will either distribute freshness to (in the case of lost freshness) or take freshness from (in the case of gained freshness) all other songs.