mirror of
https://github.com/Priler/jarvis.git
synced 2026-05-26 23:19:46 +00:00
81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
# КЕША 2.0
|
||
|
||
import config
|
||
import stt
|
||
import tts
|
||
from fuzzywuzzy import fuzz
|
||
import datetime
|
||
from num2t4ru import num2text
|
||
import webbrowser
|
||
import random
|
||
|
||
|
||
print(f"{config.VA_NAME} (v{config.VA_VER}) начал свою работу ...")
|
||
|
||
|
||
def va_respond(voice: str):
|
||
print(voice)
|
||
if voice.startswith(config.VA_ALIAS):
|
||
# обращаются к ассистенту
|
||
cmd = recognize_cmd(filter_cmd(voice))
|
||
|
||
if cmd['cmd'] not in config.VA_CMD_LIST.keys():
|
||
tts.va_speak("Что?")
|
||
else:
|
||
execute_cmd(cmd['cmd'])
|
||
|
||
|
||
def filter_cmd(raw_voice: str):
|
||
cmd = raw_voice
|
||
|
||
for x in config.VA_ALIAS:
|
||
cmd = cmd.replace(x, "").strip()
|
||
|
||
for x in config.VA_TBR:
|
||
cmd = cmd.replace(x, "").strip()
|
||
|
||
return cmd
|
||
|
||
|
||
def recognize_cmd(cmd: str):
|
||
rc = {'cmd': '', 'percent': 0}
|
||
for c, v in config.VA_CMD_LIST.items():
|
||
|
||
for x in v:
|
||
vrt = fuzz.ratio(cmd, x)
|
||
if vrt > rc['percent']:
|
||
rc['cmd'] = c
|
||
rc['percent'] = vrt
|
||
|
||
return rc
|
||
|
||
|
||
def execute_cmd(cmd: str):
|
||
if cmd == 'help':
|
||
# help
|
||
text = "Я умею: ..."
|
||
text += "произносить время ..."
|
||
text += "рассказывать анекдоты ..."
|
||
text += "и открывать браузер"
|
||
tts.va_speak(text)
|
||
pass
|
||
elif cmd == 'ctime':
|
||
# current time
|
||
now = datetime.datetime.now()
|
||
text = "Сейч+ас " + num2text(now.hour) + " " + num2text(now.minute)
|
||
tts.va_speak(text)
|
||
|
||
elif cmd == 'joke':
|
||
jokes = ['Как смеются программисты? ... ехе ехе ехе',
|
||
'ЭсКьюЭль запрос заходит в бар, подходит к двум столам и спрашивает .. «м+ожно присоединиться?»',
|
||
'Программист это машина для преобразования кофе в код']
|
||
|
||
tts.va_speak(random.choice(jokes))
|
||
|
||
elif cmd == 'open_browser':
|
||
chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
|
||
webbrowser.get(chrome_path).open("http://python.org")
|
||
|
||
|
||
# начать прослушивание команд
|
||
stt.va_listen(va_respond) |