class PlaylistThreader(): def __init__(self): self.playingThread = None self.playlist = None self.volume = volumizer.getJSON()['config']['milli'] def __play_playlist(self, position = 0): self.setVolume(volumizer.getJSON()['config']['milli']) self.playlist.play(position) self.__oversee_playlist() def __oversee_playlist(self): while True: try: if self.playlist == None: break if self.playlist != None and self.playlist.nextTrackAvilable() and self.playlist.shouldGoNext(): print("NEXT TRACK!") self.playlist.nextTrack() if self.playlist != None and not self.playlist.nextTrackAvilable() and self.playlist.shouldGoNext(): print("Playlist finished playing") self.setPlaylist(None) break except: break def getThread(self, tracks, position = 0): self.playlist = Playlist(tracks, self.volume) self.playingThread = threading.Thread(target = self.__play_playlist, args=(position,)) self.playingThread.daemon = True return {'thread' : self.playingThread, 'playlist' : self.playlist} def startThread(self): if self.playingThread != None: self.playingThread.start() def currentPlaylist(self): return self.playlist def setPlaylist(self, playlist): self.playlist = playlist def reInit(self): self.playingThread = None self.playlist = None def setVolume(self, volume): self.volume = volume if self.playlist != None and self.playlist.currentTrack != None: self.playlist.setVolume(volume)