Advertisement
egor230

Набор текста голосом 2

Jul 14th, 2024 (edited)
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.41 KB | Source Code | 0 0
  1. from libs_voice import *
  2.  
  3. get_user_name = f'''#!/bin/bash
  4. current_user=$(whoami);
  5. echo $current_user
  6. exit;# Завершаем выполнение скрипта
  7. '''
  8. # Убивает текущий процесс, запущенный текущим пользователем и соответствующий имени исполняемого скрипта.
  9. def kill_current_script():# Получаем идентификатор активного окна
  10.   result = str(subprocess.run(['ps', 'aux'], stdout=subprocess.PIPE, text=True).stdout)  # print(result)
  11.   name_scrypt =  sys.argv[0]
  12.   # Вызываем скрипт
  13.   user = subprocess.run(['bash'], input=get_user_name, stdout=subprocess.PIPE, text=True).stdout.strip()
  14.   for line in result.split("\n"):
  15.    user_name = ' '.join(line.split()[0]).replace(" ", "")
  16.    process_name = ' '.join(line.split()[10:])
  17.    if user_name==user and name_scrypt in process_name:
  18.      pid_id = int(line.split()[1])  # или используйте другой индекс, если нужны другие данные
  19.      # print(process_name)
  20.      f = '''#!/bin/bash
  21.          kill {}   '''.format(pid_id)
  22.      subprocess.call(['bash', '-c', f])#
  23.  
  24.  
  25. mutex = threading.Lock()# Создаем мьютекс
  26. def mic(driver):
  27.   mutex.acquire()  # Захватываем мьютекс
  28.   primary_button = driver.find_element("id", "mic")
  29.   style_value = primary_button.get_attribute("style")
  30.   pattern = r"--(\w+)"
  31.   result = re.search(pattern, style_value)  # time.sleep(0.75)
  32.   if result:
  33.     res= (result.group(1))
  34.     if res != "secondary-color":     # print("on")
  35.      driver.find_element("id", "mic").click()  # выключить запись голоса
  36.      time.sleep(0.75)
  37.      driver.find_element("id", "mic").click()  # включить запись голоса
  38.      time.sleep(0.75)
  39.   else:
  40.      time.sleep(0.75)
  41.      driver.find_element("id", "mic").click()  # включить запись голоса
  42.  
  43.   mutex.release()     # Освобождаем мьютекс
  44.  
  45. def a():
  46.   while 1:
  47.     with keyboard.Listener(on_release=on_release, on_press=on_press) as listener:
  48.       listener.join()
  49. driver=0
  50. try:
  51.    prefs = {'safebrowsing.enabled': True,
  52.            "credentials_enable_service": False,
  53.            "profile.password_manager_enabled": False,
  54.            "credentials_enable_service": False,
  55.            "profile.password_manager_enabled": False,
  56.            "profile.managed_default_content_settings.images": 0,           # - Отключить загрузку CSS:
  57.            # "profile.default_content_setting_values.javascript": 2,           # - Отключить загрузку JavaScript:
  58.            "profile.default_content_setting_values.cache": 0           # - Включить кэширование:
  59.            }
  60.    option = webdriver.ChromeOptions()
  61.    option.add_experimental_option("prefs", prefs)
  62.    option.add_experimental_option("excludeSwitches", ['enable-automation'])  # убрать окно
  63.    option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36")
  64.    option.add_argument("--use-fake-ui-for-media-stream")  # звук
  65.    option.add_argument("--disable-popup-blocking")  # блок всплывающих окон.
  66.    option.add_argument("--disable-blink-features=AutomationControlled")
  67.    option.add_argument('--disable-web-security')
  68.    option.add_argument("--disk-cache-size=0")
  69.    option.add_argument("--media-cache-size=0")
  70.    option.add_argument("--automatic-wait-for-preview")
  71.    option.add_argument("--enable-features=WebRtcHideLocalIpsWithMdns")
  72.    option.add_argument("--disable-site-isolation-trials")
  73.    option.binary_location = '/usr/bin/google-chrome'
  74.    option.add_argument("--disable-session-crashed-bubble")
  75.    option.add_argument('--disable-infobars')
  76.    option.add_argument('--user-data-dir=/home/egor/.config/google-chrome')
  77.  
  78.    t1 = threading.Thread(target=a)
  79.    t1.start()
  80. except Exception as ex1:  # print(ex1)  # driver.close()  # driver.quit()
  81.   pass
  82. get_user_name = f'''#!/bin/bash
  83. current_user=$(whoami);
  84. echo $current_user
  85. exit;# Завершаем выполнение скрипта
  86. '''# Убивает текущий процесс, запущенный текущим пользователем и соответствующий имени исполняемого скрипта.
  87. def kill_current_script():# Получаем идентификатор активного окна
  88.   result = str(subprocess.run(['ps', 'aux'], stdout=subprocess.PIPE, text=True).stdout)  # print(result)
  89.   name_scrypt =  sys.argv[0]
  90.   user = subprocess.run(['bash'], input=get_user_name, stdout=subprocess.PIPE, text=True).stdout.strip()  # Вызываем скрипт
  91.   for line in result.split("\n"):
  92.    user_name = ' '.join(line.split()[0]).replace(" ", "")
  93.    process_name = ' '.join(line.split()[10:])
  94.    if user_name==user and name_scrypt in process_name:
  95.      pid_id = int(line.split()[1])  # или используйте другой индекс, если нужны другие данные    # print(process_name)
  96.      f = '''#!/bin/bash
  97.          kill {}   '''.format(pid_id)
  98.      subprocess.call(['bash', '-c', f])#
  99.  
  100. def f1():
  101.   try:
  102.     global driver
  103.     driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),
  104.                               options=option)
  105.     driver.set_window_size(624, 568)  # optiol
  106.     driver.set_window_position(600, 250)  # Открываем новое окно
  107.     driver.get("https://www.speechtexter.com")  # открыть сайт
  108.     k.save_driver(driver)
  109.     time.sleep(1.5)
  110.     driver.find_element("id", "mic").click()  # включить запись голоса    # time.sleep(2.91)
  111.     driver.minimize_window()
  112.   except Exception as ex2:  #
  113.     if 'no such window: target window' in str(ex2):
  114.       print("exit no such window: target window already closed")
  115.       error_closse(driver)  # print(ex2)  # print("error")
  116.     time.sleep(5)
  117.     pass
  118. class MyThread(QtCore.QThread):  # Определение класса потока
  119.   mysignal = QtCore.pyqtSignal(str)  # Объявление сигнала
  120.   error_signal = QtCore.pyqtSignal(str)  # Добавлено объявление сигнала ошибки
  121.  
  122.   def __init__(self, parent=None):  # Конструктор класса потока
  123.     super(MyThread, self).__init__(parent)  # Вызов конструктора базового класса
  124.     f1()
  125.   def run(self):  # Метод, исполняемый потоком)
  126.     while True:  # Цикл, работающий постоянно
  127.       try:#    time.sleep(0.31)
  128.         text0 = driver.find_element("id", "textEditor").text
  129.         text = str(text0)
  130.         if len(text) != 0 and text != None and text != "None":
  131.           driver.find_element("id", "textEditor").clear()  # удалить старый текст.
  132.           text = str(text.lower()) + str(" ")
  133.           text = repeat(text, k)
  134.           if k.get_flag() == True:
  135.             k.set_flag(False)
  136.             text0 = text[0].upper() + text[1:]
  137.             press_keys(text0)
  138.           else:
  139.             press_keys(text)
  140.           print("+++++++++++++++")
  141.           mic(driver)
  142.           text = "None"
  143.       except KeyboardInterrupt:
  144.         error_closse(driver)
  145.         break
  146.       except Exception as ex2:
  147.         print(ex2)
  148.  
  149. class MyWindow(QtWidgets.QWidget):  # Определение класса главного окна
  150.     def __init__(self, parent=None):  # Конструктор класса окна
  151.       self.mic = True
  152.       super(MyWindow, self).__init__(parent)  # Вызов конструктора базового класса
  153.       self.tray_icon = QSystemTrayIcon(QtGui.QIcon("/mnt/807EB5FA7EB5E954/софт/виртуальная машина/linux must have/python_linux/Project/голос.png"), self)
  154.  
  155.       menu = QMenu()      # Создание контекстного меню для иконки в системном трее
  156.       quit_action = QAction("Quit", self)
  157.       quit_action.triggered.connect(self.quit_t)  # Используйте метод quit, определённый ниже
  158.       menu.addAction(quit_action)
  159.      
  160.       self.mythread = MyThread()  # Создание экземпляра потока
  161.      
  162.       # Установка меню в трей
  163.       self.tray_icon.setContextMenu(menu)
  164.       self.tray_icon.setToolTip("OFF")  # Установка начальной подсказки
  165.       self.tray_icon.activated.connect(self.on_tray_icon_activated)  # Привязываем обработчик к сигналу нажатия
  166.       self.tray_icon.show()
  167.       self.mythread.start()
  168.  
  169.     def on_tray_icon_activated(self):     # Данная функция
  170.      driver.set_window_size(624, 568)  # optiol
  171.      driver.set_window_position(600, 250)  # Открываем
  172.      driver.find_element("id", "mic").click()  # вкл-выкл запись голоса
  173.      time.sleep(0.25)
  174.      if self.mic== True:
  175.       self.mic=False
  176.      else:
  177.       self.mic=True#
  178.      self.tray_icon.setToolTip("ON" if self.mic else "OFF")
  179.      self.tray_icon.show()
  180.      driver.minimize_window()
  181.    
  182.     def quit_t(self):  # Метод обработки события закрытия окна
  183.       QApplication.quit()
  184.       kill_current_script()
  185. app = QApplication(sys.argv)
  186. window = MyWindow()
  187. sys.exit(app.exec_())
  188.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement