Эй, ребята, сегодня давайте создадим что-то интересное, виртуальный помощник. Компьютер – это устройство, которое помогает всем быстро достичь вещей. Это делает вещи быстрее, чем люди, и ему не стало скучно, когда он выполняет повторяющуюся задачу. Мы можем автоматизировать наши повторяющиеся задачи, используя компьютер, чтобы задачи могли бы выполнить быстро, и нам просто нужно передавать на компьютер либо, предоставляя голосовую команду или введя команду.
Во-первых, нам нужно подумать о задаче, которую мы хотим, чтобы помощник выполнить и как он может автоматизировать, как приветствовать нас, всякий раз, когда мы хотим что-то выполнить, расскажите нам дату, время, новости, погоду, шутки, отправлять электронные письма, отправить Сообщения, откройте что-то на компьютере, сообщите нам внутреннюю информацию о компьютерах, таких как чашечка использования и многое другое. Мы можем сделать функции или написать простые коды, чтобы сделать его работать.
Для создания этих задач в Python нам нужно установить пару пакетов. Вы можете использовать команды ниже для этого.
Откройте терминал с привилегиями введения выполняют эти команды по одному на одну или записать имя пакета вместе.
pip install SpeechRecognition # for Voice commands pip install clipboard # For working with clipboard pip install newsapi # For Getting news pip install newsapi-python # For News api pip install psutil # For getting compute info pip install pyaudio # For working with audio pip install pyautogui # For performing some GUI operation pip install pyttsx3 # For Voice Interaction
Вы можете использовать другие пакеты, а также разные функции с ними. Давайте прыгнем в кодировку
Первоначально нам нужно импортировать пакеты, как в каждой программе Python
import clipboard import datetime import os import psutil import pyautogui import pyjokes import pyttsx3 import pywhatkit import requests import smtplib import speech_recognition as sr import time as ti import webbrowser as we from email.message import EmailMessage from newsapi import NewsApiClient from secrets import senderemail, password from time import sleep
Теперь я хотел бы установить переменные для имени пользователя и ассистента, чтобы его можно было легко изменить, если мы хотим.
user = "Rohit" assistant= "Jarvis" # Iron man Fan
Затем забыв голосовой выход, нам нужно использовать PYTTSX3
Инициализировать двигатель PYTTSX3
engine = pyttsx3.init() voices = engine.getProperty("voices") # For Mail voice AKA Jarvis engine.setProperty("voice", voices[0].id) # For Female voice AKA Friday # engine.setProperty("voice", voices[1].id)
Это голоса Microsoft David (Seal) и Microsoft Zira (женский) голос для программы рассказчика Windows. Вы также можете установить другие голоса, но я обнаруживаю, что немного отстают и все не покрыто в них.
Функции ввода/вывода
def output(audio): # print(audio) # For printing out the output engine.say(audio) engine.runAndWait() # For getting the device index you can execute this code So if you want to change the device you can do that. # for index, name in enumerate(sr.Microphone.list_microphone_names()): # print("Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format( # index, name)) def inputCommand(): # query = input() # For getting input from CLI r = sr.Recognizer() query = "" with sr.Microphone(device_index=2) as source: print("Listening...") r.pause_threshold = 1 try: query = r.recognize_google(r.listen(source), language="en-IN") except Exception as e: output("Say that again Please...") return query
До этого мы просто устанавливаем вещи для помощника. Теперь мы сделаем функции для наших задач
Функция приветствия
def greet(): hour = datetime.datetime.now().hour if (hour >= 6) and (hour < 12): output(f"Good Morning {user}") elif (hour >= 12) and (hour < 18): output(f"Good afternoon {user}") elif (hour >= 18) and (hour < 21): output(f"Good Evening {user}") output("How may I assist you?")
Функция электронной почты
# You can also use a secret file and store these variables there as I am doing or If you not going to show this code to anyone that you can it here as well. def sendEmail(): senderemail = "kingtechnologies2017@gmail.com" password = "********" email_list = { "test1": "bojole7513@httptuan.com", # Temporary Email "test2": "" } try: email = EmailMessage() output("To whom you want to send the mail?") name = inputCommand().lower() email['To'] = email_list[name] output("What is the subject of the mail?") email["Subject"] = inputCommand() email['From'] = senderemail output("What should i Say?") email.set_content(inputCommand()) s = smtplib.SMTP("smtp.gmail.com", 587) s.starttls() s.login(senderemail, password) s.send_message(email) s.close() output("Email has sent") except Exception as e: print(e) output("Unable to send the Email")
Отправить функцию сообщения WhatsApp
Это использует пакет веб-браузера
def sendWhatMsg(): user_name = { 'Jarvis': '+91 95299 16394' } try: output("To whom you want to send the message?") name = inputCommand() output("What is the message") we.open(+ user_name[name]+'&text='+inputCommand()) sleep(6) pyautogui.press('enter') output("Message sent") except Exception as e: print(e) output("Unable to send the Message")
Функция погоды
Для погоды мы можем использовать API OpenWeatherMap
def weather(): city = "jaipur" res = requests.get( f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=16f0afad2fd9e18b7aee9582e8ce650b&units=metric").json() temp1 = res["weather"][0]["description"] temp2 = res["main"]["temp"] output( f"Temperature is {format(temp2)} degree Celsius \nWeather is {format(temp1)}")
Функция новостей
Для новостей мы можем использовать пакет API News API
def news(): newsapi = NewsApiClient(api_key='5840b303fbf949c9985f0e1016fc1155') output("What topic you need the news about") topic = inputCommand() data = newsapi.get_top_headlines( q=topic, language="en", page_size=5) newsData = data["articles"] for y in newsData: output(y["description"])
Идея функция
Мы можем использовать обработку файлов для этого, это довольно надежное хранилище, но нам нужно тщательно реализовать его
def idea(): output("What is your idea?") data = inputCommand().title() output("You Said me to remember this idea: " + data) with open("data.txt", "a", encoding="utf-8") as r: print(data, file=r)
Теперь последняя часть I.e. Вызывая функция на основе команды и некоторое встроенное исполнение
Прежде всего функция приветствия
greet() # Then with while true we can make it a infinite loop on command while True: # Getting input from the user query = inputCommand().lower() # According to the query if query have respective word we will execute the respective command if ("time" in query): output("Current time is " + datetime.datetime.now().strftime("%I:%M")) elif ('date' in query): output("Current date is " + str(datetime.datetime.now().day) + " " + str(datetime.datetime.now().month) + " " + str(datetime.datetime.now().year)) elif ('email' in query): sendEmail() elif ('message' in query): print("Sending...") sendWhatMsg() elif ("search" in query): output("what you want to search?") we.open(+inputCommand()) elif ("youtube" in query): output("What you want to search on Youtube?") pywhatkit.playonyt(inputCommand()) elif ('weather' in query): weather() elif ("news" in query): news() elif ("read" in query): output(clipboard.paste()) elif ("covid" in query): r = requests.get( 'https://coronavirus-19-api.herokuapp.com/all').json() output( f'Confirmed Cases: {r["cases"]} \nDeaths: {r["deaths"]} \nRecovered {r["recovered"]}') elif ("workspace" in query): output("Which workspace you want to work on") os.startfile("D:\\Work Spaces\\" + inputCommand()+".code-workspace") elif ("joke" in query): output(pyjokes.get_joke()) elif ("idea" in query): idea() elif ("do you know" in query): ideas = open("data.txt", "r") output(f"You said me to remember these ideas:\n{ideas.read()}") elif ("screenshot" in query): pyautogui.screenshot(str(ti.time()) + ".png").show() elif "cpu" in query: output(f"Cpu is at {str(psutil.cpu_percent())}") elif "offline" in query: hour = datetime.datetime.now().hour if (hour >= 21) and (hour < 6): output(f"Good Night {user}! Have a nice Sleep") else: output(f"By {user}") quit()
На основании различных входов мы выполняем другую задачу, так это наш помощник может иметь столько функциональных возможностей, которые мы можем использовать это все для этого блога, как я уже упоминал, вы можете настроить его в соответствии с вами, и вы можете проверить Github Repo для полного код
Дайте мне знать, если у вас есть какие-либо вопросы или запросы. Я буду рад помочь вам.
Как доли и следовать. Вы также можете проверить мои другие профили на King Technologies
Спасибо за чтение
Оригинал: “https://dev.to/rohit19060/how-to-create-a-virtual-assistant-using-python-4h7l”