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()
+