-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathjarvis.py
More file actions
156 lines (124 loc) · 4.71 KB
/
jarvis.py
File metadata and controls
156 lines (124 loc) · 4.71 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import pyttsx3
import speech_recognition as sr
import datetime
import wikipedia
import webbrowser
import os
import smtplib
from googletrans import Translator
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
# print(voices[0].id)
engine.setProperty('voice', voices[0].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
def wishMe():
hour = int(datetime.datetime.now().hour)
if hour >= 0 and hour < 12:
speak("Good Morning!")
elif hour >= 12 and hour < 18:
speak("Good Afternoon!")
else:
speak("Good Evening!")
speak("I am Jarvis Sir. 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
r.pause_threshold = 0.6 # Adjust this value as needed
r.energy_threshold = 4000 # Adjust this value as needed
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
# Not using my email and password for security issues
def sendEmail(to, content):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo
server.starttls()
server.login('your-email@gmail.com', 'your-password')
server.sendmail('your-email@gmail.com', to, content)
server.close()
if __name__ == "__main__":
wishMe()
while True:
query = takeCommand().lower()
if 'iris switch back' in query:
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
# print(voices[0].id)
engine.setProperty('voice', voices[0].id)
speak('Jarvis here Sir!')
if not 'jarvis' in query:
continue
if 'switch' in query:
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
# print(voices[0].id)
engine.setProperty('voice', voices[1].id)
speak('Hello there. I am Iris at your service master')
# Logic for executing tasks based on query
if 'wikipedia' in query:
speak('Searching Wikipedia...')
query = query.replace("Wikipedia", "")
results = wikipedia.summary(query, sentences=3)
speak("According to Wikipedia")
print(results)
speak(results)
elif 'open youtube' in query:
webbrowser.open("https://www.youtube.com")
elif 'open google' in query:
webbrowser.open("https://www.google.com")
elif 'open chat gpt' in query:
webbrowser.open("https://www.openai.com")
elif 'open git' in query:
webbrowser.open("https://www.github.com")
elif 'play music' in query:
music_dir = ''
songs = os.listdir(music_dir)
print(songs)
os.startfile(os.path.join(music_dir, songs[0]))
elif 'the time' in query:
strTime = datetime.datetime.now().strftime("%H:%M:%S")
print(strTime)
speak(f"Sir, the time is {strTime}")
elif 'open discord' in query:
discPath = "C:\\Users\\OMEN\\AppData\\Local\\Discord\\app-1.0.9012\\Discord.exe"
os.startfile(discPath)
elif 'open code' in query:
codePath = "C:\\Users\\OMEN\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"
os.startfile(codePath)
elif 'open honkai' in query:
honkPath = "E:\\Honkai Impact 3rd glb\\launcher.exe"
os.startfile(honkPath)
elif 'email to myself' in query:
try:
speak("What should I say?")
content = takeCommand()
to = "your-email@gmail.com" # your email goes here
sendEmail(to, content)
speak("Email has been sent!")
except Exception as e:
print(e)
speak("Sorry Sir. I am not able to send this email")
elif 'translate' in query:
try:
speak("Please provide me with the passage you want to translate Sir.")
passage = input("Enter your passage: ")
translator = Translator()
translation = translator.translate(passage)
translated_text = translation.text
print(translated_text)
speak(translated_text)
except Exception as e:
print(e)
speak("Sorry Sir, could not translate it.")