from time import sleep
import speech_recognition as sr
import pyttsx3
import datetime
import wikipedia
import webbrowser
import os
import smtplib
import pyautogui
import pywhatkit
import openai
openai.api_key = "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"
def generate_response(prompt):
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
temperature=0.5,
max_tokens=4000,
n=1,
stop=None,
timeout=None
)
return response.choices[0].text.strip()
memory = []
# Function to remember user input
def remember(text):
memory.append(text)
# Function to recall user input
def recall():
if memory:
return memory[-1]
else:
return ""
engin = pyttsx3.init('sapi5')
voices = engin.getProperty('voices')
engin.setProperty('voice', voices[2].id)
engin.setProperty("rate", 170)
def speak(audio):
engin.say(audio)
engin.runAndWait()
def wishMe():
hour = int(datetime.datetime.now().hour)
if hour>=0 and hour<12:
speak("Good Morning Sir")
elif hour>=12 and hour<18:
speak("Good Afternoon Sir")
elif hour>=18 and hour<21:
speak("Good Evening Sir")
else:
speak("Good Nigth Sir")
speak("please tell me how can i help you")
def take_screenshot():
now = datetime.datetime.now()
timestamp = now.strftime("%d-%m-%Y_%H-%M-%S")
file_name = f"E:\\PYTHON\\Jarvis screenshots\\screenshot_{timestamp}.jpg"
screenshot = pyautogui.screenshot()
screenshot.save(file_name)
print(f"Screenshot saved as {file_name}")
print("Screenshot saved in Jarvis screenshot folder")
speak("Screenshot saved in Jarvis screenshot folder")
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
r.energy_threshold = 300
audio = r.listen(source,0,5)
try:
print("Recognizing...")
query = r.recognize_google(audio, language = 'eng-in')
print(f"User said: {query}\n")
except Exception as e:
print("Sorry sir, Say that again Please...\n")
return "None"
return query
def writer():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
r.energy_threshold = 300
audio = r.listen(source,0,20)
try:
print("Recognizing...")
query = r.recognize_google(audio, language = 'eng-in')
print(f"User said: {query}\n")
except Exception as e:
print("Sorry sir, Say that again Please...\n")
return "None"
return query
def listen():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
r.energy_threshold = 300
audio = r.listen(source,0,5)
try:
print("Recognizing...")
query = r.recognize_google(audio, language = 'en-in')
print(f"User said: {query}\n")
return query
except sr.UnknownValueError:
print("Sorry, I couldn't understand.")
speak("Sorry, I couldn't understand.")
except sr.RequestError as e:
print("Could not request results; {0}".format(e))
speak("Could not request results")
def sendEmail(to, content):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login('youremail@gmail.com', 'your-password')
server.sendmail('youremail@gmail.com', to, content)
server.close()
if __name__ == "__main__":
while True:
query = takeCommand().lower()
if "wake up" in query or "jarvis" in query or "hello" in query or "hey" in
query:
wishMe()
while True:
query = takeCommand().lower()
if "go to sleep" in query:
speak("ok sir, you can call me anytime")
break
elif "good job" in query:
speak("Thank You Sir")
elif "take a screenshot" in query or "take screenshot" in query or
"screenshot" in query:
take_screenshot()
elif 'wikipedia' in query:
speak('Searching Wikipedia...')
query = query.replace("wikipedia", "")
results = wikipedia.summary(query, sentences =50)
speak("According to wikipedia")
print(results)
speak(results)
elif 'open youtube' in query:
speak('ok sir, opening youtube...')
webbrowser.open("https://www.youtube.com")
elif 'open google' in query:
speak('ok sir, opening google...')
webbrowser.open("http://www.google.com")
elif "jarvis open" in query or "open" in query:
query = query.replace("jarvis","")
query = query.replace("open","")
speak('ok sir, opening'+ query)
pyautogui.press("super")
pyautogui.typewrite(query)
pyautogui.sleep(0.5)
pyautogui.press("enter")
elif "jarvis search" in query or "search" in query:
import wikipedia as googleScrap
query = query.replace("jarvis search","")
query = query.replace("search","")
speak('ok sir, searching...' +query)
speak('This is what i found on web')
try:
result = googleScrap.summary(query,3)
print(result)
speak(result)
except:
speak('No speakable data found')
elif "jarvis google" in query or "google" in query:
query = query.replace("jarvis google","")
query = query.replace("google","")
speak("ok sir")
pywhatkit.search(query)
elif "youtube" in query:
query = query.replace("jarvis youtube","")
query = query.replace("youtube","")
web = "https://www.youtube.com/results?search_query=" + query
webbrowser.open(web)
speak("This is what i found for your search!")
elif "shut down my computer" in query:
speak("do you really want to shut down your computer?")
while True:
reply = takeCommand()
if "yes" in reply:
speak("ok sir")
os.system('taskkill/im *')
os.system('shutdown /s /t 1')
else:
speak("ok sir")
break
elif "volume up" in query or "increase volume" in query:
pyautogui.press("volumeup", 2)
elif "volume down" in query or "decrease volume" in query:
pyautogui.press("volumedown",3)
elif "volume mute" in query:
pyautogui.press("volumemute")
elif "write" in query:
speak("As you wish Sir")
sleep(2)
query=writer()
pyautogui.typewrite(query)
elif "play" in query:
query=query.replace("play","")
speak("ok Sir, Playing"+query)
os.system("start spotify")
sleep(2)
pyautogui.hotkey('ctrl','l')
sleep(2)
pyautogui.typewrite(query)
sleep(2)
pyautogui.press("enter")
pyautogui.press("tab")
pyautogui.press("enter")
sleep(2)
pyautogui.press("enter")
sleep(2)
pyautogui.hotkey('alt','tab')
elif "my songs" in query:
speak("ok Sir, Playing your playlist")
os.system("start spotify")
sleep(2)
pyautogui.hotkey('alt','shift','1')
sleep(2)
pyautogui.press("tab")
pyautogui.press("tab")
pyautogui.press("tab")
pyautogui.press("tab")
pyautogui.press("tab")
pyautogui.press("tab")
pyautogui.press("tab")
sleep(2)
pyautogui.press("enter")
sleep(2)
pyautogui.hotkey('alt','tab')
elif "pause" in query or "stop" in query:
os.system("start spotify")
sleep(2)
pyautogui.press("space")
pyautogui.hotkey('alt','tab')
elif "resume" in query or "start" in query:
os.system("start spotify")
sleep(2)
pyautogui.press("space")
pyautogui.hotkey('alt','tab')
elif "change" in query or "next" in query:
os.system("start spotify")
sleep(2)
pyautogui.hotkey('ctrl','right')
pyautogui.hotkey('alt','tab')
elif "previous" in query or "last" in query:
os.system("start spotify")
sleep(2)
pyautogui.hotkey('ctrl','left')
pyautogui.hotkey('ctrl','left')
pyautogui.hotkey('alt','tab')
elif "call" in query:
query=query.replace("call ","")
speak("Ok Sir, Calling... "+query)
os.system("start D:\\WhatsApp\\WhatsApp-2.2310.5-full\\lib\\
net45\\WhatsApp.exe")
sleep(10)
pyautogui.hotkey('ctrl','n')
sleep(2)
pyautogui.typewrite(query)
sleep(2)
pyautogui.press('enter')
sleep(1)
pyautogui.hotkey('shift','tab')
pyautogui.hotkey('shift','tab')
pyautogui.hotkey('shift','tab')
pyautogui.hotkey('shift','tab')
pyautogui.hotkey('shift','tab')
pyautogui.hotkey('shift','tab')
pyautogui.press('enter')
elif "message" in query:
while True:
query=query.replace("message ","")
speak("Ok Sir")
speak("What's your message?")
message= takeCommand()
if "nothing" in query or "leave" in query:
speak("ok sir")
break
else:
os.system("start D:\\WhatsApp\\WhatsApp-2.2310.5-full\\lib\\
net45\\WhatsApp.exe")
sleep(10)
pyautogui.hotkey('ctrl','n')
sleep(2)
pyautogui.typewrite(query)
sleep(2)
pyautogui.press('enter')
sleep(2)
pyautogui.typewrite(message)
pyautogui.press("enter")
speak("message sent")
pyautogui.hotkey('alt','tab')
break
elif "read" in query:
sleep(2)
pyautogui.hotkey('ctrl','c')
sleep(1)
os.system("")
elif "close" in query or "Jarvis close" in query:
query = query.replace("close","")
query = query.replace("jarvis close","")
speak("ok sir closing"+query)
os.system('taskkill/im '+query+'.exe')
elif "exit all" in query or "Jarvis exit all" in query:
speak("ok sir, closing everything")
os.system('taskkill /f /fi')
elif "set my computer on sleep mode" in query:
speak("do you really want to sleep your computer?")
while True:
reply = takeCommand()
if "yes" in reply:
speak("ok sir")
os.system('powercfg /hibernate off')
else:
speak("ok sir")
break
elif "activate chatbot" in query:
while True:
print("----Welcome to Jarvis Chatbot!!----")
speak("Welcome to Jarvis Chatbot")
while True:
speak ("Do you want to chat with Jarvis?")
query = takeCommand()
if "yes" in query:
speak("Jarvis ChatBot is ready")
while True:
prompt = listen()
if "exit" in prompt:
speak("ok sir")
break
if prompt:
remember(prompt)
prompt=recall()
response = generate_response(prompt)
print("Jarvis:", response)
speak(response)
break
break
elif "finally sleep" in query or "close yourself" in query or "exit" in
query:
print("Good bye Sir!!")
speak("Good bye Sir")
break
elif "restart" in query or "reboot " in query:
speak("ok Sir, Restarting Jarvis")
sleep(2)
os.system("start E:\\PYTHON\\Jarvis.py")
break