forked from Priler/jarvis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_old.py
81 lines (59 loc) · 2.26 KB
/
main_old.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# КЕША 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)