U
U
UMFUCHI2021-10-13 20:53:04
Python
UMFUCHI, 2021-10-13 20:53:04

How to close the browser preferably using the os library?

Look, there is a code that opens the application:

@vcl.on('открой оперу')
def start_opera(text):
    open_opera()
    return "Браузер запущен"

def open_opera():
    os.startfile('C:/Users/User/AppData/Local/Programs/Opera GX/launcher.exe')

How to make it so that when the command "close opera" is closed, it closes the browser?

Here is the whole code

import pyautogui
import os
from gtts import gTTS
import random
import time
import datetime
import playsound
import speech_recognition as sr
import pyautogui as pg


def listen_command():

    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Скажите вашу команду: ")
        audio = r.listen(source)

    try:
        our_speech = r.recognize_google(audio, language="ru")
        print("Вы сказали: " + our_speech)
        return our_speech
    except sr.UnknownValueError:
        return "ошибка"
    except sr.RequestError:
        return "ошибка"


class VoiceCommandList:
    def __init__(self):
        self.actions = list()

    def on(self, condition):
        if isinstance(condition, list):
            conditions = [el.lower() for el in condition]
            predicate = lambda text: any(condition in text for condition in conditions)
        elif isinstance(condition, str):
            condition = condition.lower()
            predicate = lambda text: condition in text

        if isinstance(condition, str):
            condition = condition.lower()
            predicate = lambda text: condition in text
        elif callable(condition):
            predicate = condition
        else:
            raise TypeError('Condition must be either string or function!')

        def decorator(command_func):
            self.actions.append((predicate, command_func))
            return command_func

        return decorator

    def run_command(self, text):
        text = text.lower()
        for predicate, command in self.actions:
            if predicate(text):
                try:
                    response = command(text)
                    if response is None:
                        response = "Команда выполнена"
                except Exception as err:
                    response = "Ошибка при выполнении команды"
                    print(err)
                if response:
                    say_message(response)
                break
        else:
            say_message("Неизвестная команда")
vcl = VoiceCommandList()

@vcl.on('открой оперу')
def start_opera(text):
    open_opera()
    return "Браузер запущен"

@vcl.on('закрой оперу')
def close_opera(text):
    close_browser()
    return "Браузер закрыт"

def open_opera():
    os.startfile('C:/Users/User/AppData/Local/Programs/Opera GX/launcher.exe')

def close_browser():
     print('здесь пока ничего нет')

def say_message(message):
    voice = gTTS(message, lang="ru")
    file_voice_name = "_audio_" + str(time.time()) + "_" + str(random.randint(0, 100000)) + ".mp3"
    voice.save(file_voice_name)
    playsound.playsound(file_voice_name)
    print("Голосовой ассистент: " + message)


if __name__ == '__main__':
    while True:
        command = listen_command()
        vcl.run_command(command)


And I ask you to write the code so that it is clear even for me (teapot)

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question