class AmarokEventHandler: def __init__(self, state): self.__running = True; self.__player = Player() self.__state = state Dcop.call("player enableRandomMode false") def start(self): while self.__running: delay = 1 fd = sys.stdin.fileno() (r,w,e) = select.select( [fd], [], [], delay) for File in r: if File == fd: line = os.read(fd, 1024) self.__dispatch(line) def stop(self): self.__running = False def __dispatch(self, s): Debug.log("Event received: " + s) if s.find("engineStateChange: empty" ) >= 0: Debug.log("Playlist is empty!") if self.__state.isRunning(): Debug.log("Queuing random song") self.__player.playRandom() else: Debug.log("Not running") elif s.find("trackChange" ) >= 0: pl = Playlist() if not pl.isPlaying(): self.__player.playRandom()
class AmarokEventHandler: def __init__(self, state): self.__running = True; self.__player = Player() self.__state = state def start(self): while self.__running: delay = 1 fd = sys.stdin.fileno() (r,w,e) = select.select( [fd], [], [], delay) for File in r: if File == fd: line = os.read(fd, 1024) self.__dispatch(line) def stop(self): self.__running = False def __dispatch(self, s): if s.find("engineStateChange: empty" ) >= 0: if self.__state.isRunning(): sys.stderr.write("Unknown notification: " + s + " -> ignoring\n") self.__player.playRandom() elif s.find("trackChange" ) >= 0: pl = Playlist() if not pl.isPlaying(): self.__player.playRandom() else: sys.stderr.write("Unknown notification: " + s + " -> ignoring\n")
class AmarokEventHandler: def __init__(self): self.__running = True; self.__player = Player() self.__last = -1 def start(self): while self.__running: delay = 1 fd = sys.stdin.fileno() (r,w,e) = select.select( [fd], [], [], delay) for File in r: if File == fd: line = os.read(fd, 1024) self.__dispatch(line) def stop(self): self.__running = False def __dispatch(self, s): now = time.time() sys.stderr.write("%i \n" % now) if s.find("engineStateChange: empty" ) >= 0: # The following is a trick to make stop work; there's got to be a way to talk to this # thread # Issue: it doesn't work from Amarok itself if (now - self.__last >= 3): self.__player.playRandom() else: sys.stderr.write("Too soon: skipping\n") elif s.find("trackChange" ) >= 0: pl = Playlist() if not pl.isPlaying(): self.__player.playRandom() else: sys.stderr.write("Unknown notification: " + s + " -> ignoring\n") self.__last = now