проверь код и оптемезируй допиши фильрт по дням import time
import sqlite3
import math
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup

# Настройки
AVITO_LOGIN = 'your_email@example.com'       # Ваш email для входа
AVITO_PASSWORD = 'your_password'            # Ваш пароль
SEARCH_QUERY = 'велосипед'                   # Слово для поиска
MAX_DAYS = 3                                 # Максимальное количество дней с момента размещения
PRICE_PERCENT = 0.3                          # Процент предложения от цены
DATABASE = 'sent_messages.db'                # База данных для хранения отправленных сообщений

# Инициализация базы данных
conn = sqlite3.connect(DATABASE)
cursor = conn.cursor()
cursor.execute('''
    CREATE TABLE IF NOT EXISTS sent (
        ad_id TEXT PRIMARY KEY
    )
''')
conn.commit()

# Инициализация Selenium WebDriver
driver = webdriver.Chrome()  # Убедитесь, что chromedriver в PATH
driver.maximize_window()

try:
    # Вход в Авито
    driver.get('https://www.avito.ru/accounts/login')

    time.sleep(3)  # Ждем загрузки страницы

    # Ввод email
    email_field = driver.find_element(By.NAME, 'email')
    email_field.send_keys(AVITO_LOGIN)
    email_field.send_keys(Keys.RETURN)

    time.sleep(2)

    # Ввод пароля
    password_field = driver.find_element(By.NAME, 'password')
    password_field.send_keys(AVITO_PASSWORD)
    password_field.send_keys(Keys.RETURN)

    time.sleep(5)  # Ждем завершения входа

    # Поиск по заданному слову
    search_url = f'https://www.avito.ru/moskva?q={SEARCH_QUERY}'
    driver.get(search_url)

    time.sleep(5)  # Ждем загрузки результатов

    # Фильтрация по времени размещения
    # Например, последние 24 часа или 3 дня
    # Тут нужно адаптировать к специфике сайта
    # Пример для фильтрации последних 3 дней:
    # Найдите элементы фильтра и примените нужные параметры
    # Это может потребовать дополнительного кода

    # Получение страницы
    soup = BeautifulSoup(driver.page_source, 'html.parser')

    # Парсинг объявлений
    ads = soup.find_all('div', {'data-marker': 'item'})

    for ad in ads:
        try:
            ad_id = ad.get('data-item-id')
            if not ad_id:
                continue

            # Проверка, отправлялось ли уже сообщение
            cursor.execute('SELECT 1 FROM sent WHERE ad_id = ?', (ad_id,))
            if cursor.fetchone():
                continue  # Уже отправлено

            # Извлечение цены
            price_tag = ad.find('span', {'itemprop': 'price'})
            if not price_tag:
                continue
            price_text = price_tag.get_text().replace('₽', '').replace(' ', '').strip()
            price = int(price_text)

            offer = math.ceil(price * PRICE_PERCENT)

            # Извлечение ссылки на объявление
            link_tag = ad.find('a', {'itemprop': 'url'})
            if not link_tag:
                continue
            ad_url = 'https://www.avito.ru' + link_tag.get('href')

            # Переход к объявлению
            driver.get(ad_url)
            time.sleep(5)

            # Нахождение и нажатие кнопки "Написать"
            write_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Написать')]")
            write_button.click()

            time.sleep(3)

            # Ввод сообщения
            message_box = driver.find_element(By.TAG_NAME, 'textarea')
            message = f"Привет! Готов купить ваш товар за {offer} рублей."
            message_box.send_keys(message)

            # Отправка сообщения
            send_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Отправить')]")
            send_button.click()

            time.sleep(2)

            # Запись в базу данных
            cursor.execute('INSERT INTO sent (ad_id) VALUES (?)', (ad_id,))
            conn.commit()

            print(f'Сообщение отправлено для объявления ID: {ad_id}')

        except Exception as e:
            print(f'Ошибка при обработке объявления: {e}')
            continue

finally:
    driver.quit()
    conn.close()