Mercurial > vixm
changeset 42:bc6db55448e1 pure
statistics engine
author | Josef "Jeff" Sipek <jeffpc@josefsipek.net> |
---|---|
date | Sun, 05 Nov 2006 19:25:30 -0500 |
parents | f56aeafb05b1 |
children | d3ac3a46a294 |
files | vixm/player.py vixm/stats.py |
diffstat | 2 files changed, 40 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/vixm/player.py Sun Nov 05 02:43:57 2006 -0500 +++ b/vixm/player.py Sun Nov 05 19:25:30 2006 -0500 @@ -3,7 +3,7 @@ import mad, ao -import playlist +import playlist, stats class playerThread(Thread): def __init__(self): @@ -18,6 +18,8 @@ self.blksize = 40960 self.dev = ao.AudioDevice("oss") + self.stats = stats.statsengine("stats") + def play_next(self, lists): try: # pop song off the PRIO queue @@ -37,6 +39,7 @@ self.playing = True self.current = s + self.stats.current = s def run(self): while not self.shutdown: @@ -55,6 +58,7 @@ if self.end_current: self.end_current = False else: + self.stats.played() self.playing = False else: # nothing to play, just sleep
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vixm/stats.py Sun Nov 05 19:25:30 2006 -0500 @@ -0,0 +1,35 @@ +NEW_SONGS_SYNC = 2 + +class statsengine: + def __init__(self, statsfile): + self.__fname = statsfile + try: + self.__stats = eval(open(statsfile, "r").read()) + except: + self.__stats = {} + self.__new_songs = 0 + + self.current = None + + def __del__(self): + self.sync() + + def sync(self): + f = open(self.__fname, "w") + f.write(repr(self.__stats)) + f.close() + + self.__new_songs = 0 + + def played(self): + s = str(self.current) + + if not self.__stats.has_key(s): + self.__stats[s] = 0 + + self.__stats[s] += 1 + + self.__new_songs += 1 + if self.__new_songs >= NEW_SONGS_SYNC: + self.sync() +