DesktopAssistant/Jarvis2_4windows.py

129 lines
3.5 KiB
Python
Raw Normal View History

import configparser
import os
2021-10-06 22:12:24 +02:00
2021-10-07 17:31:11 +02:00
import speech_recognition as sr
2021-10-03 15:22:09 +05:30
from actions import search_engine_selector, speak, wishMe
2021-10-07 17:38:48 +02:00
from commands import (
command_bye,
command_hello,
command_mail,
command_nothing,
command_open,
command_pause_music,
command_play_music,
2021-10-07 17:38:48 +02:00
command_search,
command_stop_music,
command_unpause_music,
2021-10-07 17:38:48 +02:00
command_whatsup,
command_wikipedia,
)
2021-10-03 15:22:09 +05:30
2021-10-07 16:16:42 +02:00
popular_websites = {
"google": "https://www.google.com",
"youtube": "https://www.youtube.com",
"wikipedia": "https://www.wikipedia.org",
"amazon": "https://www.amazon.com",
"GitHub": "https://www.github.com",
}
2021-10-07 16:16:42 +02:00
2021-10-06 22:12:24 +02:00
2021-10-07 16:16:42 +02:00
def main(search_engine, takeCommand, debug):
while True:
query = takeCommand().lower()
# logic for executing commands without arguments
phrases = {
"what's up": command_whatsup,
"nothing": command_nothing,
"abort": command_nothing,
"stop": command_nothing,
"hello": command_hello,
"bye": command_bye,
"play music": command_play_music,
"unpause": command_unpause_music,
"pause music": command_pause_music,
"stop music": command_stop_music,
}
for phrase, command in phrases.items():
if phrase in query:
command()
# logic for executing commands with arguments
if "wikipedia" in query.lower():
command_wikipedia(speak, debug, query)
elif "open" in query.lower():
command_open(
query,
popular_websites,
debug,
search_engine,
takeCommand
)
elif "search" in query.lower():
command_search(query, search_engine)
elif "mail" in query:
command_mail(takeCommand)
speak("Next Command! Sir!")
2021-10-07 16:09:11 +02:00
2021-10-07 16:16:42 +02:00
def run():
2021-10-08 18:46:20 +02:00
master = config['DEFAULT']['master']
2021-10-07 16:16:42 +02:00
search_engine = search_engine_selector(config)
2021-10-07 16:16:42 +02:00
debug = config['DEFAULT']['debug']
if debug == "True":
def takeCommand():
query = input("Command |--> ")
return query
else:
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening....")
r.pause_threshold = 0.5
audio = r.listen(source)
query = " "
try:
print("Recognizing....")
query = r.recognize_google(audio, language="en-in")
print("user said: " + query)
except sr.UnknownValueError:
if debug == "True":
print("Sorry Could You please try again")
else:
pass
speak("Sorry Could You please try again")
except Exception as e:
if debug == "True":
print(e)
print("Say That Again Please")
else:
pass
query = None
return query
speak(text="Initializing Jarvis....")
2021-10-08 18:43:18 +02:00
wishMe(master)
2021-10-07 16:16:42 +02:00
main(search_engine, takeCommand, debug)
2021-10-07 16:09:11 +02:00
if os.path.isfile('./config.ini'): # Checks if config.ini exists.
config = configparser.ConfigParser() # if exists loads library.
config.read('config.ini') # and also the file.
2021-10-07 16:16:42 +02:00
run() # Then it launches the main program
2021-10-07 16:09:11 +02:00
else:
# if it doesn't exist it drops an error message and exits.
print('You need a config.ini file.')
print('Check the documentation in the Github Repository.')