Random plugin works

This commit is contained in:
bjschuma 2010-02-09 18:16:32 -05:00
parent 8a1f5c820f
commit 77cf9482a5
2 changed files with 36 additions and 10 deletions

View File

@ -37,30 +37,37 @@ class Plugin(plugin.Plugin):
curlib = str(settings.get("curlib"))
count = db.countlib(curlib)
nxttrk = settings.get("curtrk")
if nxttrk > count:
if nxttrk >= (count-1):
nxttrk = 0
else:
nxttrk += 1
sel = sql.Select("track","libtrack","library="+str(curlib))
rows = sel.execute().fetchall()
manager.run("next",[rows[nxttrk][0], nxttrk])
manager.run("next",[nxttrk])
#sel = sql.Select("track","libtrack","library="+str(curlib))
#rows = sel.execute().fetchall()
#manager.run("next",[rows[nxttrk][0], nxttrk])
def run(self, args=None):
# args[0] : database track ID
# args[1] : new current track number
# args: new current track number
if args==None or len(args)==0:
signal.emit("next")
return
elif len(args) == 1:
write("Usage:" + self.usage)
path = db.getpath(args[0])
nxttrk = int(args[0])
settings.set("curtrk",args[1])
curlib = str( settings.get("curlib") )
sel = sql.Select("track","libtrack","library="+curlib)
rows = sel.execute().fetchall()
if nxttrk >= len(rows)-1:
nxttrk = len(rows)-1
next = rows[nxttrk][0]
path = db.getpath(next)
settings.set("curtrk",nxttrk)
manager.run("music",["load",path])
manager.run("music",["play"])

View File

@ -8,6 +8,10 @@ from bt import plugin
from bt.message import write
import settings
from bt import signal
import random
random.seed()
from ct import db
import manager
class Plugin(plugin.Plugin):
@ -24,7 +28,22 @@ class Plugin(plugin.Plugin):
pass
def close(self):
signal.remove("next",self.randNext)
def randNext(self):
count = db.countlib(str(settings.get("curlib")))
curtrk = settings.get("curtrk")
id = curtrk
# Guarentee that we don't choose the same track twice
while id==curtrk:
id = random.randint(0,count)
# Prevent infinite loop if library has size 1
if count == 1:
break
manager.run("next",[id])
signal.stop("next")
pass