Advertisement
egor230

libs_voice.py

Jul 8th, 2024 (edited)
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.20 KB | Source Code | 0 0
  1. import os, time, json, time, subprocess, re, threading, socket, uuid, time, glob, sys, threading
  2. from selenium import webdriver
  3.  
  4. from selenium.common import TimeoutException, NoSuchElementException
  5. from webdriver_manager.chrome import ChromeDriverManager
  6. from selenium.webdriver.chrome.service import Service
  7. from selenium.webdriver.chrome.options import Options
  8. from selenium.webdriver.common.keys import Keys
  9. from pynput.keyboard import Key, Controller
  10. from pynput import *
  11. from urllib3 import HTTPConnectionPool
  12. from selenium.webdriver.common.by import By
  13. from selenium.webdriver.support.wait import WebDriverWait
  14. from selenium.webdriver.support import expected_conditions as EC
  15. from bs4 import BeautifulSoup
  16.  
  17. from PIL import Image
  18. from io import BytesIO
  19.  
  20. import pyaudio
  21. # import numpy as np
  22. # select,
  23. # import speech_recognition as sr
  24.  
  25. def a():
  26.   while 1:
  27.     with keyboard.Listener(on_release=on_release, on_press=on_press) as listener:
  28.       listener.join()
  29. def del_all_chats(driver):
  30.   # Находим все чаты
  31.   chat_items = driver.find_elements(By.CSS_SELECTOR, "li[class*='chat-list-item']")
  32.  
  33.   # Удаляем все, кроме первого
  34.   for item in chat_items[1:]:
  35.     more_button = item.find_element(By.CSS_SELECTOR, "button.chat-list-item__more-btn")
  36.     more_button.click()
  37.     try:
  38.       delete_button = WebDriverWait(driver, 10).until(
  39.         EC.element_to_be_clickable(
  40.           (By.XPATH, "//div[contains(@class, 'context-menu-item') and .//span[text()='Удалить чат']]"))
  41.       )
  42.       delete_button.click()
  43.     except:
  44.       print(f"Не удалось удалить чат.")
  45. def cut_image(driver):# Получение скриншота всей страницы и сохранение его в файл
  46.  screenshot = driver.get_screenshot_as_png()
  47.  with open('screenshot.png', 'wb') as file:
  48.     file.write(screenshot)
  49.  # Открываем файл в бинарном режиме
  50.  with open('screenshot.png', 'rb') as file:
  51.     screenshot = file.read()
  52.     # Загружаем скриншот в объект Image
  53.     image = Image.open(BytesIO(screenshot))
  54.      # Определяем размеры изображения
  55.     width, height = image.size    # Определяем координаты для правого нижнего угла
  56.     # Например, вырезаем угол размером 200x200 пикселей
  57.     left = width - 100
  58.     top = height - 100
  59.     right = width
  60.     bottom = height
  61.  
  62.     # Обрезаем изображение
  63.     cropped_image = image.crop((left + 50, top + 15, right - 13, bottom - 43))
  64.  
  65.     # Сохраняем или показываем результат
  66.     cropped_image.save("cropped_corner.png")
  67.  
  68.   # with open('page_content.html', 'w', encoding='utf-8') as file:
  69.   #    file.write(html_content)
  70.   # Найдите все элементы с классом message-bubble
  71. #  html_content = driver.page_source  # Используйте BeautifulSoup для парсинга HTML
  72.  # soup = BeautifulSoup(html_content, 'html.parser')
  73. class save_key:
  74.  
  75.   def __init__(self):
  76.     self.text = ""
  77.     self.flag = False
  78.     self.word = []
  79.     self.res = {}
  80.     self.new_res = {}
  81.     self.driver = None
  82.   def save_driver(self, driver):
  83.     self.driver = driver
  84.  
  85.   def get_driver(self):
  86.     return self.driver
  87.   def save_text(self, text):
  88.     self.text = text
  89.  
  90.   def get_text(self):
  91.     return self.text
  92.  
  93.   def get_flag(self):
  94.     return self.flag
  95.  
  96.   def set_flag(self, value):
  97.     self.flag = value
  98.  
  99.   def update_dict(self):
  100.     data = "/mnt/807EB5FA7EB5E954/Program Files/list for replacements.json"  # файл настроек.
  101.     if os.path.exists(data):  # есть ли этот файл.
  102.       with open(data, encoding="cp1251") as json_file:  # загрузка настроек из файла.
  103.         self.res = json.load(json_file)  # проходимся по каждому элементу словаря
  104.         for key in self.res.keys():  # Если ключ содержит '*', добавляем его в новый словарь
  105.           if '*' in key:
  106.             self.new_res[key] = self.res[key]
  107.         for key in self.new_res.keys():
  108.           del self.res[key]
  109.  
  110.   def get_dict(self):  # словарь без *
  111.     return self.res
  112.  
  113.   def get_new_dict(self):  # словарь с *
  114.     return self.new_res
  115.  
  116.   def save_words(self, w):
  117.     self.word.clear()
  118.     for i in w:
  119.       self.word.append(i)
  120.  
  121.   def get_words(self):
  122.     return self.word
  123.  
  124.  
  125. class get_lang:
  126.   def __init__(self):
  127.     self.text = ""
  128.  
  129.   def save_text(self, text):
  130.     self.text = text
  131.  
  132.   def get_text(self):
  133.     return self.text
  134.  
  135.  
  136. script = '''#!/bin/bash
  137. # Ищем идентификаторы процессов, содержащих слово "chrome"
  138. pids=$(pgrep -f "chrome")
  139. # Перебираем найденные идентификаторы процессов и отправляем им сигнал завершения
  140. for pid in $pids; do
  141.    kill $pid
  142. done
  143.  
  144. pids=$(pgrep -f "chromedriver")
  145. # Перебираем найденные идентификаторы процессов и отправляем им сигнал завершения
  146. for pid in $pids; do
  147.    kill $pid
  148. done
  149. '''
  150. subprocess.call(['bash', '-c', script])
  151. k = save_key()
  152. k.update_dict()
  153. time.sleep(2.2)
  154.  
  155. def error_closse(driver):
  156.   # print("quit")
  157.   subprocess.call(['bash', '-c', script])
  158.   script1 = '''#!/bin/bash
  159.   echo $pid
  160.   kill $pid
  161.  '''
  162.   subprocess.call(['bash', '-c', script1])
  163.   driver.close()
  164.   driver.quit()
  165.  
  166.   # Завершение Python-скрипта
  167.   sys.exit()
  168.  
  169. def replace(match):
  170.   res = k.get_dict()
  171.   return res[match.group(0)]
  172.  
  173. def repeat(text, k):
  174.   k.save_text(text)
  175.   text1 = ""
  176.   res = k.get_dict()
  177.   k.save_words(res)
  178.   words = k.get_words()
  179.   try:
  180.     for i in words:
  181.       text = k.get_text()
  182.       reg = r'\b' + r'\b|\b'.join([i]) + r'\b'
  183.       text1 = re.sub(reg, replace, text)
  184.       k.save_text(text1)
  185.     new_res = k.get_new_dict()
  186.     for word, i in new_res.items():
  187.       text = k.get_text()
  188.       pattern = re.compile(re.escape(word), re.IGNORECASE)
  189.       text1 = pattern.sub(i, text)
  190.       k.save_text(text1)
  191.   except Exception as ex:
  192.     pass
  193.   return text1
  194.  
  195. def is_connected():
  196.   try:  # попытаемся установить соединение с google.com на порту 80
  197.     socket.create_connection(('www.google.com', 80))
  198.     return True
  199.   except OSError:
  200.     pass
  201.   return False
  202.  
  203. def process_text(previous_message1, k):
  204.   text = repeat(previous_message1 + str(" "), k)
  205.   if k.get_flag() == True:
  206.     k.set_flag(False)
  207.     text0 = text[0].upper() + text[1:]
  208.     press_keys(text0)
  209.   else:
  210.     press_keys(text)
  211. def on_press(key):  # обработчик клави.  # print(key )
  212.   key = str(key).replace(" ", "")
  213.   if key == "Key.shift_r":    # print("okl")
  214.     k.set_flag(True)
  215.     return True
  216.   if key == "Key.space" or key =="Key.right" or key =="Key.left"\
  217.   or key =="Key.down" or key =="Key.up":
  218.     k.set_flag(False)
  219.     return True
  220.   if key == "Key.alt":
  221.     driver=k.get_driver()
  222.     k.update_dict()
  223.     driver.find_element("id", "mic").click()  # включить запись голоса
  224.     time.sleep(2.5)
  225.     driver.find_element("id", "mic").click()  # включить запись голоса
  226.     return True
  227.   else:
  228.     return True
  229.  
  230. def on_release(key):
  231.   pass
  232.   return True
  233.  
  234. def press_key_enter():
  235.   script = '''#!/bin/bash
  236. xte 'key Return'
  237. '''
  238.   subprocess.call(['bash', '-c', script])
  239.  
  240. class save_ln:
  241.   def __init__(self):
  242.     self.text = ""
  243.  
  244.   def save_text(self, text):
  245.     self.text = text
  246.  
  247.   def get_text(self):
  248.     return self.text
  249.  
  250. def press_keys(text):  # xte 'keyup Shift_L'
  251.   try:
  252.     print(text)
  253.     for char in text:
  254.         if char == ' ':
  255.             subprocess.call(['xdotool', 'key', '--delay', '9', 'space'])
  256.         else:
  257.             subprocess.call(['xdotool', 'type', '--delay', '9', char])
  258.         time.sleep(0.03)  # Уменьшение задержки
  259.   except Exception as ex1:
  260.     print(ex1)
  261.     return
  262. def get_option():
  263.   prefs = {'safebrowsing.enabled': True, "credentials_enable_service": False,
  264.            "profile.password_manager_enabled": False, "profile.managed_default_content_settings.images": 0,
  265.            # - Отключить загрузку CSS:
  266.            # "profile.default_content_setting_values.javascript": 2,    # - Отключить загрузку JavaScript:
  267.            "profile.default_content_setting_values.cache": 0  # - Включить кэширование:
  268.            }
  269.   option = webdriver.ChromeOptions()
  270.   option.add_experimental_option("prefs", prefs)
  271.   option.add_experimental_option("excludeSwitches", ['enable-automation'])  # убрать окно
  272.   option.add_argument(
  273.     "user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36")
  274.   option.add_argument("--disable-gpu")
  275.   option.add_argument('--disable-infobars')
  276.   option.add_experimental_option("excludeSwitches", ['enable-automation'])  # убрать окно
  277.   option.add_argument("--use-fake-ui-for-media-stream")  # звук
  278.   option.add_argument("--disable-popup-blocking")  # блок всплывающих окон.
  279.   option.add_argument("--disable-blink-features=AutomationControlled")
  280.   option.add_argument('--disable-web-security')
  281.   option.add_argument("--disk-cache-size=0")
  282.   option.add_argument("--media-cache-size=0")
  283.   option.add_argument("--automatic-wait-for-preview")
  284.   option.add_argument("--enable-features=WebRtcHideLocalIpsWithMdns")
  285.   option.add_argument("--disable-images")
  286.   option.add_argument("--disable-extensions")
  287.   option.add_argument("--no-sandbox")
  288.   option.add_argument("--disable-autofill")
  289.   option.add_argument("--disable-background-timer-throttling")  # Отключение ограничения фоновых таймеров
  290.   option.add_argument("--disable-background-networking")  # Отключение фоновой сетевой активности
  291.   option.add_argument(
  292.     '--user-data-dir=/mnt/807EB5FA7EB5E954/софт/виртуальная машина/linux must have/python_linux/Project/google-chrome')
  293.   return option
  294.     # en = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K',
  295.     #       'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V',
  296.     #       'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', '.', ',']
  297.     # ru = ['а', 'А', 'б', 'Б', 'в', 'В', 'г', 'Г', 'д', 'Д', 'е', 'Е', 'ё', 'Ё', 'ж', 'Ж', 'з', 'З', 'и', 'И', 'й', 'Й', 'к',
  298.     #       'К', 'л', 'Л', 'м', 'М', 'н', 'Н', 'о', 'О', 'п', 'П', 'р', 'Р', 'с', 'С', 'т', 'Т', 'у', 'У', 'ф', 'Ф', 'х', 'Х',
  299.     #       'ц', 'Ц', 'ч', 'Ч', 'ш', 'Ш', 'щ', 'Щ', 'ъ', 'Ъ', 'ы', 'Ы', 'ь', 'Ь', 'э', 'Э', 'ю', 'Ю', 'я', 'Я', '-', '+', ' ']
  300.     #
  301.     # ln = save_ln()
  302.     #
  303.     #
  304.     # def get_current_keyboard_layout():
  305.     #   result = subprocess.run(['xset', 'q'], capture_output=True, text=True)  # Проверка успешного выполнения команды
  306.     #   if result.returncode == 0:  # Получение вывода команды
  307.     #     output = result.stdout  # Определение текущей раскладки
  308.     #     if '00001000' in output:  # print("en")
  309.     #       return "en"
  310.     #     elif '00000000' in output:  # print("ru")
  311.     #       return "ru"
  312.     #   return None
  313.     #
  314.     #
  315.     # def switch_language(ln):  # print("opl")
  316.     #   script = f'''#!/bin/bash
  317.     #
  318.     #   xte 'keydown Shift_L' 'keydown Alt_L' 'keyup Shift_L' 'keyup Alt_L'
  319.     #   '''
  320.     #   subprocess.call(['bash', '-c', script, '_'])
  321.     #   time.sleep(0.8)
  322.     #   # print(ln)  # input()  # print(get_current_keyboard_layout())
  323.     #   while (ln != get_current_keyboard_layout()):
  324.     #     time.sleep(1.9)
  325.     #   # print("ok")
  326.     # ln.save_text(get_current_keyboard_layout())  # язык по умолчанию.
  327.     # if ln.get_text() != get_current_keyboard_layout():  # print("sw")
  328.     #   switch_language(ln.get_text())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement