예제 #1
0
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)