62 lines
1.2 KiB
Python
62 lines
1.2 KiB
Python
# Basic plugin class
|
|
|
|
__author__="bjschuma"
|
|
__date__ ="$Feb 8, 2010 10:00:40 AM$"
|
|
|
|
|
|
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):
|
|
def __init__(self):
|
|
plugin.Plugin.__init__(self)
|
|
self.help = ""
|
|
|
|
|
|
def open(self):
|
|
if settings.has("random") == False:
|
|
settings.set("random",False)
|
|
elif settings.get("random") == True:
|
|
signal.register("next",self.randNext,90)
|
|
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
|
|
|
|
|
|
def run(self, args=None):
|
|
if args==None or len(args)==0:
|
|
rand = not settings.get("random")
|
|
settings.set("random",rand)
|
|
if rand == True:
|
|
signal.register("next",self.randNext,90)
|
|
else:
|
|
signal.remove("next",self.randNext)
|
|
|
|
elif args[0] == "?":
|
|
write(settings.get("random"))
|
|
|