# Timer # author: Vladislav Janvarev import time import os from vacore import VACore import utils.num_to_text_ru as num_to_text female_units_min2 = ((u'минуту', u'минуты', u'минут'), 'f') female_units_min = ((u'минута', u'минуты', u'минут'), 'f') female_units_sec2 = ((u'секунду', u'секунды', u'секунд'), 'f') female_units_sec = ((u'секунда', u'секунды', u'секунд'), 'f') #female_units_uni = ((u'', u'', u''), 'f') modname = os.path.basename(__file__)[:-3] # calculating modname # функция на старте def start(core:VACore): manifest = { "name": "Таймер", "version": "1.2", "require_online": False, "default_options": { "wavRepeatTimes": 1, # число повторений WAV-файла таймера "wavPath": 'media/timer.wav', # путь к звуковому файлу }, "commands": { "таймер|тайгер": set_timer, } } return manifest def start_with_options(core:VACore, manifest:dict): pass def set_timer(core:VACore, phrase:str): if phrase == "": # таймер по умолчанию - на 5 минут txt = num_to_text.num2text(5, female_units_min) set_timer_real(core,5*60,txt) return phrase += " " if(phrase.startswith("на ")): # вырезаем "на " (из фразы "на Х минут") phrase = phrase[3:] # ставим секунды? for i in range(1,100): txt = num_to_text.num2text(i, female_units_sec) + " " if phrase.startswith(txt): #print(txt) set_timer_real(core,i,txt) return txt2 = num_to_text.num2text(i, female_units_sec2) + " " if phrase.startswith(txt2): #print(txt,txt2) set_timer_real(core,i,txt) return # ставим минуты? for i in range(1,100): txt = num_to_text.num2text(i, female_units_min) + " " if phrase.startswith(txt): set_timer_real(core,i*60,txt) return txt2 = num_to_text.num2text(i, female_units_min2) + " " if phrase.startswith(txt2): set_timer_real(core,i*60,txt) return # без указания единиц измерения - ставим минуты for i in range(1,100): txt = num_to_text.num2text(i, female_units_min) + " " txt2 = num_to_text.num2text(i) + " " if phrase.startswith(txt2): set_timer_real(core,i*60,txt) return # спецкейс под одну минуту if phrase.startswith("один ") or phrase.startswith("одна ") or phrase.startswith("одну "): txt = num_to_text.num2text(1, female_units_min) set_timer_real(core,1*60,txt) return def set_timer_real(core:VACore, num:int, txt:str): core.set_timer(num,(after_timer, txt)) core.play_voice_assistant_speech("Ставлю таймер на "+txt) def after_timer(core:VACore, txt:str): options = core.plugin_options(modname) for i in range(options["wavRepeatTimes"]): core.play_wav(options["wavPath"]) time.sleep(0.2) core.play_voice_assistant_speech(txt+" прошло") #core.play_voice_assistant_speech("БИП! БИП! БИП! "+txt+" прошло") if __name__ == "__main__": set_timer(None,"")