From 77cf9482a50d18c4a8af6cb810200bc3974753dc Mon Sep 17 00:00:00 2001 From: bjschuma Date: Tue, 9 Feb 2010 18:16:32 -0500 Subject: [PATCH] Random plugin works --- src/core/next.py | 27 +++++++++++++++++---------- src/extra/rand.py | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/core/next.py b/src/core/next.py index 3f046c94..85b906da 100644 --- a/src/core/next.py +++ b/src/core/next.py @@ -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"]) diff --git a/src/extra/rand.py b/src/extra/rand.py index fa22faad..f3a17b6d 100644 --- a/src/extra/rand.py +++ b/src/extra/rand.py @@ -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