-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathPersonal-Assistant.py
More file actions
132 lines (103 loc) · 4.1 KB
/
Copy pathPersonal-Assistant.py
File metadata and controls
132 lines (103 loc) · 4.1 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import pyttsx3 #pip install pyttsx3
import speech_recognition as sr #pip install speechRecognition
import datetime
import wikipedia #pip install wikipedia
import webbrowser
import os
import smtplib
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
# print(voices[1].id)
engine.setProperty('voice', voices[1].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
def wishMe():# This will wish me just after starting according to time period of day
hour = int(datetime.datetime.now().hour)
if hour>=0 and hour<12:
speak("Good Morning! your name")
elif hour>=12 and hour<18:
speak("Good Afternoon! your name")
else:
speak("Good Evening! your name")
speak("I am Edith . Please tell me how may I help you")
def takeCommand():
#It takes microphone input from the user and returns string output
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language='en-in')
print(f"User said: {query}\n")
except Exception as e:
# print(e)
print("Say that again please...")
return "None"
return query
def sendEmail(to, content):# for connecting with email
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login('youremail@gmail.com', 'Password')
server.sendmail('youremail@gmail.com', to, content)
server.close()
if __name__ == "__main__":
wishMe()
while True:
# if 1:
query = takeCommand().lower()
# Logic for executing tasks based on query
if 'wikipedia' in query:# searching anything in wikipedia
speak('Searching Wikipedia...')
query = query.replace("wikipedia", "")
results = wikipedia.summary(query, sentences=2)
speak("According to Wikipedia")
print(results)
speak(results)
# these function will run according to way you want to query
elif 'open youtube' in query:
webbrowser.open("youtube.com")
elif 'open google' in query:
webbrowser.open("google.com")
elif 'open stackoverflow' in query:
webbrowser.open("stackoverflow.com")
elif 'what is time going on' in query:
strTime = datetime.datetime.now().strftime("%H:%M:%S")
speak(f"Sir, the time is {strTime}")
elif 'open code' in query:# path of application should be given
codePath = "C:\\Users\\hp\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"
os.startfile(codePath)
elif 'email to s' in query:# forsending emails
try:
speak("What should I say?")
content = takeCommand()
to = "**************@gmail.com" # email adress
sendEmail(to, content)
speak("Email has been sent!")
except Exception as e:
print(e)
speak("Sorry my friend . I am not able to send this email")
elif 'email to dad' in query:
try:
speak("What should I say?")
content = takeCommand()
to = "*********@gmail.com" # email adress
sendEmail(to, content)
speak("Email has been sent!")
except Exception as e:
print(e)
speak("Sorry my friend . I am not able to send this email")
# You can add various queries according to your need
elif 'what is your name' in query:
speak("My name is Edith")
elif 'your favourite food' in query:
speak("chicken tandoor and biryani")
elif 'who are you' in query:
speak("sasmit's personal assistant")
elif 'how can you help me' in query:
speak("I can sed email! , I can open google , youtube , stackoverflow , and search wikipedia for you")
else:
quit