changeset 32:f97eb9f0c207 master

Add random song selection for default queue
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Fri, 03 Nov 2006 23:26:35 -0500
parents 4fba4ccab723
children 99983189d4b2
files vixm/player.py vixm/playlist.py vixm/ui.py
diffstat 3 files changed, 24 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/vixm/player.py	Fri Nov 03 23:02:15 2006 -0500
+++ b/vixm/player.py	Fri Nov 03 23:26:35 2006 -0500
@@ -6,9 +6,15 @@
 		Thread.__init__(self)
 
 		self.shutdown = False
+		self.playing  = False
+
+		self.last     = None
 
 		self.lists = lists
 
+	def play(self, s):
+		print "about to play %s" % (str(s),)
+
 	def run(self):
 		while not self.shutdown:
 			time.sleep(0.5)
--- a/vixm/playlist.py	Fri Nov 03 23:02:15 2006 -0500
+++ b/vixm/playlist.py	Fri Nov 03 23:26:35 2006 -0500
@@ -6,6 +6,7 @@
 # it under the terms of the GNU General Public License version 2 as
 # published by the Free Software Foundation.
 
+import random
 import xmms, re
 
 LIST_PRIO	= 0
@@ -15,6 +16,7 @@
 	def __init__(self, allowrandom=False):
 		self.__list = []
 		self.__allowrand = allowrandom # allow randomization of this list
+		self.__cursor = 0
 	
 	def enqueue(self, song):
 		""" Append a song to the list """
@@ -28,6 +30,19 @@
 		""" Pop the next song """
 		return self.__list.pop(0)
 
+	def next(self):
+		""" Get the next song """
+		idx = random.randint(0, len(self.__list)-1)
+
+		if not self.__allowrand:
+			idx = self.__cursor
+
+			self.__cursor += 1
+			if self.__cursor >= len(self.__list):
+				self.__cursor = 0
+
+		return self.__list[idx]
+
 	def __getitem__(self, i):
 		""" Get item at position i """
 		return self.__list[i]
--- a/vixm/ui.py	Fri Nov 03 23:02:15 2006 -0500
+++ b/vixm/ui.py	Fri Nov 03 23:26:35 2006 -0500
@@ -42,32 +42,20 @@
 	ui = uiThread(play, lists)
 	ui.start()
 
-	last = None
 	while not play.shutdown:
-		"""
 		# check which song we are playing now
-		pos = xmms.control.get_playlist_pos()
-		current = lists[playlist.LIST_DEFAULT][pos]
-
-		# if it is different from what we played last time we
-		# checked...
-		if current != last:
+		if not play.playing:
 			try:
 				# pop song off the PRIO queue
 				next = lists[playlist.LIST_PRIO].pop()
-
-				# if successful, play the popped song
-				idx = lists[playlist.LIST_DEFAULT].index(next)
-				xmms.control.set_playlist_pos(idx)
-				current = next
 			except IndexError:
 				# no song to pop
+				next = lists[playlist.LIST_DEFAULT].next()
 				pass
 			except ValueError:
 				print "WTF is going on?!"
 
-		# update last played song
-		last = current"""
+			play.play(next)
 
 		# sleep
 		time.sleep(0.5)