Рубрики
Без рубрики

Как создать виртуальный помощник с помощью Python

Эй, ребята, сегодня давайте создадим что-то интересное, виртуальный помощник. Компьютер – это устройство, которое … Теги с Python, помощником, программированием, школой.

Эй, ребята, сегодня давайте создадим что-то интересное, виртуальный помощник. Компьютер – это устройство, которое помогает всем быстро достичь вещей. Это делает вещи быстрее, чем люди, и ему не стало скучно, когда он выполняет повторяющуюся задачу. Мы можем автоматизировать наши повторяющиеся задачи, используя компьютер, чтобы задачи могли бы выполнить быстро, и нам просто нужно передавать на компьютер либо, предоставляя голосовую команду или введя команду.

Во-первых, нам нужно подумать о задаче, которую мы хотим, чтобы помощник выполнить и как он может автоматизировать, как приветствовать нас, всякий раз, когда мы хотим что-то выполнить, расскажите нам дату, время, новости, погоду, шутки, отправлять электронные письма, отправить Сообщения, откройте что-то на компьютере, сообщите нам внутреннюю информацию о компьютерах, таких как чашечка использования и многое другое. Мы можем сделать функции или написать простые коды, чтобы сделать его работать.

Для создания этих задач в 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”