Ozon Бот авто покупка

Добрый день прошу помочь опытного человека

мне нужен бот который по ссылке по запросам сможет выкупить товар с озона

есть пример реализации кода но он не работает не актуален сейчас https://github.com/qskateboard/OzonLovec

мне нужно чтото на подобье что вышло у меня описываю ниже помогите пожалуйста

import time
from PyQt5.QtWidgets import (
   QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QLineEdit,
   QDateEdit, QCheckBox, QTextEdit, QTimeEdit, QMessageBox
)
from PyQt5.QtCore import QDateTime, Qt, QTimer
from PyQt5.QtGui import QFont
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

class OzonBotApp(QWidget):
   def __init__(self):
       super().__init__()
       self.initUI()
       self.timer = QTimer(self)
       self.timer.timeout.connect(self.update_log)
       self.driver = None

   def initUI(self):
       self.setWindowTitle('Ozon Bot')
       self.setGeometry(100, 100, 450, 700)
       self.setStyleSheet("background-color: #E6F7FF;")

       layout = QVBoxLayout()
       layout.setSpacing(20)
       layout.setContentsMargins(20, 20, 20, 20)

       self.title_label = QLabel('Ozon Bot', self)
       self.title_label.setFont(QFont("Arial", 26, QFont.Bold))
       self.title_label.setStyleSheet("color: #0056B3; text-align: center;")
       layout.addWidget(self.title_label)

       self.link_label = QLabel('Ссылка на товар:')
       layout.addWidget(self.link_label)

       self.link_input = QLineEdit(self)
       self.link_input.setPlaceholderText("Введите ссылку на товар...")
       self.link_input.setStyleSheet(self.get_input_style())
       layout.addWidget(self.link_input)

       self.time_checkbox = QCheckBox('Использовать запланированное время')
       layout.addWidget(self.time_checkbox)

       self.date_label = QLabel('Дата закупки:')
       layout.addWidget(self.date_label)

       self.date_input = QDateEdit(self)
       self.date_input.setDate(QDateTime.currentDateTime().date())
       self.date_input.setStyleSheet(self.get_input_style())
       layout.addWidget(self.date_input)

       self.time_label = QLabel('Время закупки:')
       layout.addWidget(self.time_label)

       self.time_input = QTimeEdit(self)
       self.time_input.setTime(QDateTime.currentDateTime().time())
       self.time_input.setStyleSheet(self.get_input_style())
       layout.addWidget(self.time_input)

       self.start_bot_button = QPushButton('Запустить бота', self)
       self.start_bot_button.setStyleSheet(self.get_button_style())
       self.start_bot_button.clicked.connect(self.run_bot)
       layout.addWidget(self.start_bot_button)

       self.log_output = QTextEdit(self)
       self.log_output.setReadOnly(True)
       self.log_output.setStyleSheet(
           "background-color: white; border: 1px solid #0056B3; border-radius: 5px; padding: 10px;")
       layout.addWidget(self.log_output)

       self.setLayout(layout)

   def get_input_style(self):
       return """
           QLineEdit, QDateEdit, QTimeEdit {
               background-color: #ffffff;
               border: 1px solid #0056B3;
               border-radius: 5px;
               padding: 10px;
               font-size: 14px;
           }
           QLineEdit:focus, QDateEdit:focus, QTimeEdit:focus {
               border: 1px solid #0056B3;
               background-color: #E0F7FF;
           }
       """

   def get_button_style(self):
       return """
           QPushButton {
               background-color: #0056B3;
               color: white;
               border-radius: 5px;
               padding: 12px;
               font-size: 16px;
           }
           QPushButton:hover {
               background-color: #003366;
           }
           QPushButton:pressed {
               background-color: #003366;
           }
       """

   def run_bot(self):
       link = self.link_input.text().strip()

       if not link:
           QMessageBox.warning(self, "Ошибка", "Пожалуйста, введите ссылку на товар!", QMessageBox.Ok)
           return

       self.log_output.append(f"Запуск бота...\nСсылка: {link}\nИспользование времени: {self.time_checkbox.isChecked()}")

       if self.time_checkbox.isChecked():
           self.schedule_bot(link)
       else:
           self.add_to_cart(link)

   def schedule_bot(self, link):
       self.log_output.append(f"Запланирована покупка товара...\nСсылка: {link}\nДата: {self.date_input.date().toString()}\nВремя: {self.time_input.time().toString()}")
       self.target_time = QDateTime(self.date_input.date(), self.time_input.time())
       self.timer.start(1000)

   def update_log(self):
       current_time = QDateTime.currentDateTime()
       remaining_time = self.target_time.secsTo(current_time)

       if remaining_time > 0:
           self.log_output.append(f"Ожидание: осталось {remaining_time} секунд до запуска.")
       else:
           self.timer.stop()
           self.log_output.append("Время для покупки наступило.")
           link = self.link_input.text().strip()
           self.add_to_cart(link)

   def add_to_cart(self, link):
       options = Options()
       options.add_argument('--disable-blink-features=AutomationControlled')
       options.add_argument('--start-maximized')

       # Эмуляция Android
       options.add_argument("--window-size=400,800")  # Размер экрана Android
       options.add_argument('--user-agent=Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36')

       self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

       try:
           self.driver.get(link)
           self.log_output.append("Страница загружена.")
           time.sleep(5)  # Дождаться полной загрузки страницы

           # Нажимаем на кнопку для обхода бота
           bypass_button = self.driver.find_element(By.XPATH, '/html/body/div/div/div/div[2]/button')
           bypass_button.click()
           self.log_output.append("Обход бота выполнен.")
           time.sleep(3)  # Небольшая пауза для завершения обхода

           # Находим кнопку добавления в корзину по актуальному XPath и кликаем по ней
           add_to_cart_button = self.driver.find_element(By.XPATH, '//*[@id="layoutPage"]/div[1]/div[11]/div/div/div/div/div/div/div[1]/button/div[2]')
           add_to_cart_button.click()
           self.log_output.append("Товар добавлен в корзину.")
       except Exception as e:
           self.log_output.append(f"Ошибка: {str(e)}")
       finally:
           self.log_output.append("Браузер остается открытым для дальнейшего использования.")

if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = OzonBotApp()
   ex.show()
   sys.exit(app.exec_()) ```

Ответы (0 шт):