def smartpause_track(): currentTrack = trackThreader.currentTrack() if currentTrack == None: return send_error(error_codes.NO_TRACK, "No track playing") if currentTrack.isPaused(): currentTrack.unpause() return send_state_track_message(currentTrack, "Track unpaused") else: currentTrack.pause() return send_state_track_message(currentTrack, "Track paused")
def rewind_track(): currentTrack = trackThreader.currentTrack() destPos = check_integer(request, params.POSITION) unpause = True if destPos == None: return send_error(error_codes.WRONG_PLAYBACK_POSITION, "Wrong playback position") unpause = check_boolean(request, params.UNPAUSE) if currentTrack == None: return send_error(error_codes.NO_TRACK, "No track playing") elif destPos == -1: return send_error(error_codes.WRONG_PLAYBACK_POSITION, "No position specified") elif destPos < 0 or destPos > round(currentTrack.getLength() / 1000): return send_error(error_codes.WRONG_PLAYBACK_POSITION, "Wrong playback position. It should be specified with seconds") else: oldPos = currentTrack.playbackInfo().get('playback').get('position').get('millis') total = currentTrack.playbackInfo().get('playback').get('total').get('millis') currentTrack.setPlaybackPosition(destPos) if unpause and currentTrack.isPaused(): currentTrack.unpause() return send_state_track_message(currentTrack, "Playback position succesfully changed", { 'newPosition' : destPos * 1000, 'oldPosition' : oldPos, 'total' : total })
def unpause_track(): currentTrack = trackThreader.currentTrack() if currentTrack == None: return send_error(error_codes.NO_TRACK, "No track playing") elif not currentTrack.isPaused(): return send_error(error_codes.TRACK_ALREADY_PLAYING, "Track is already playing") else: currentTrack.unpause() return send_state_track_message(currentTrack, "Track unpaused")
def pause_track(): currentTrack = trackThreader.currentTrack() if(currentTrack == None): return send_error(error_codes.NO_TRACK, "No track playing") elif(currentTrack.isPaused()): return send_error(error_codes.TRACK_ALREADY_PAUSED, "Track is already paused") else: currentTrack.pause() return send_state_track_message(currentTrack, "Track paused")
def startTrack(trackPath): #trackThreader.registerOnEndCustomCallback(track_endevent) if(trackPath == "" or trackPath == None): return send_error(error_codes.NO_PATH_DEFINED, "No path parameter passed.") if not os.path.exists(trackPath) or not check_path(trackPath): return send_error(error_codes.WRONG_PATH_SPECIFIED, "File doesn't exsist.") if not is_valid_file(trackPath): return send_error(error_codes.INVALID_TYPE, "Invalid filetype.") flushPlaylist() data = trackThreader.getThread(trackPath) currentThread = data.get('thread') currentTrack = data.get('track') currentThread.start() return send_state_track_message(currentTrack, "Track started")