def repeat(self, state=None): if state is None: # Toggle random mode current_state = self.mpc.status()["repeat"] if current_state == "0": new_state = 1 elif current_state == "1": new_state = 0 elif state in BOOLEAN_TRUE: new_state = 0 elif state in BOOLEAN_FALSE: new_state = 1 else: printError("not_boolean", state=state, boolean_true=BOOLEAN_TRUE, boolean_false=BOOLEAN_FALSE) return None if self.output: printByName("repeat", state=new_state) ret = self.mpc.repeat(new_state) if self.after_status: self.status() return ret
def delete(self, position): """Delete song specified at position, Position can be a range like num-num If position is 0, remove the current playing song.""" if "-" in position: split_position = position.split("-") if len(split_position) != 2: printError("delete_parse", position=position) return None elif not split_position[0]: # Negative number? try: end = -1 * int(split_position[1]) except ValueError: printError("delete_parse", position=position) else: printError("delete_negative", position=[end,]) return None else: begin, end = split_position try: begin = int(begin) - 1 end = int(end) - 1 except ValueError: printError("delete_parse", position=position) return None if begin < 0 or end < 0: printError("delete_negative", position=[begin+1, end+1]) return None if begin > end: begin, end = end, begin elif begin == end: end+=1 printByName("delete", position=list(range(begin+1, end+1))) self.mpc.command_list_ok_begin() diff = 0 for pos in range(begin, end): self.mpc.delete(pos - diff) diff += 1 return self.mpc.command_list_end() if position == "0": # Remove current song pos = int(self.mpc.currentsong()["pos"]) else: try: pos = int(position) - 1 except ValueError: printError("delete_parse", position=position) return None printByName("delete", position=[pos+1,]) return self.mpc.delete(pos)