def execute(self, operand):
        self.debug("Reminding " + operand)

        cmd = "play " + self.get_resource_path('ding.mp3')
        system.call_silently(cmd, sync=True)

        speech.say("Sir, " + operand, sync=False)
        response = inputs.get_string_timeout(self.get_config('TIME_OUT'))
        if not response:
            self.reschedule(operand)

        if meaning.means(response, "okay"):
            return
        elif meaning.means(response, "not_okay"):
            self.debug("Reminding again in one day.")
            reschedule_str = inputs.get_string("Schedule again in: ")
            try:
                delta = parse.time_delta(reschedule_str)
            except exceptions.PAULAParseException as e:
                outputs.print_error(str(e.__class__))

            # fix bash issues again
            operand = operand.replace("\"", "\\\"")
            operand = operand.replace("\'", "\\\'")
            schedule.schedule_event_with_delta(delta, "paula_remind", operand)
        else:
            self.reschedule(operand)
def numeral_and_quantifier(string):
    if len(string.split()) != 2: #TODO is this too hard coded?
        raise exceptions.PAULAParseException("Too many spaces to parse:  \"" + string + "\"")
    numeral, quantifier = string.split()
    num = get_numeral_int(numeral)
    delta_seconds = 0
    delta_minutes = 0
    delta_hours = 0
    delta_days = 0
    delta_weeks = 0

    if meaning.means(quantifier, "seconds"):
        delta_seconds = num
    elif meaning.means(quantifier, "minutes"):
        delta_minutes = num
    elif meaning.means(quantifier, "hours"):
        delta_hours = num
    elif meaning.means(quantifier, "days"):
        delta_days = num
    elif meaning.means(quantifier, "weeks"):
        delta_weeks = num
    else:
        raise exceptions.PAULAUnknownQuantifierException

    delta = timedelta(days=delta_days, seconds=delta_seconds, minutes=delta_minutes, hours=delta_hours,
                      weeks=delta_weeks)
    return delta
def prompt_for_input_boolean(prompt=""):
    """
    Prompt the user for a boolean, optionally given a specific prompt.
    @param prompt: A given prompt string
    @return: A boolean of the user's choice.
    """
    while True:
        answer = string.prompt_for_input_string(prompt=prompt)
        if meaning.means(answer, "yes"):
            return True
        elif meaning.means(answer, "no"):
            return False
        else:
            outputs.print_error("Not a Boolean value.")
    def execute(self, operand):
        search_string = operand
        self.debug("The search string: " + search_string)
        local_song = song.find_song(search_string)

        if local_song:
            self.debug("Found local song!")
            local_song.play()
            return

        #We didn't find it locally; check youtube!
        vid_id, name = youtube.search_first_hit(search_string)
        youtube.play_song(vid_id, name)

        if self.get_config('ASK_DOWNLOAD'):
            print("Do you want to download this song?")
            answer = inputs.get_string()
            if meaning.means(answer, "yes"):
                youtube.download_song(vid_id)