Advertisement
egor230

libs_voice.py

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