import pandas as pd 
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
from gradio_client import Client  # Импортируем клиент для работы с API
import time

# Чтение данных из CSV файла
csv_file_path = 'kinopoisk_series_and_dorama_info.csv'
data = pd.read_csv(csv_file_path)

# Выбор первой строки (или можно использовать цикл для обработки всех строк)
first_row = data.iloc[0]

# Получение значений из первой строки
title = str(first_row['Название'])
kp_id = str(first_row['ID'])
type_of_show = str(first_row['Тип'])

# Установка и запуск драйвера
options = webdriver.ChromeOptions()
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)

# Функция для генерации текста с помощью API
def generate_text(prompt):
    client = Client("yuntian-deng/ChatGPT")
    result = client.predict(
        inputs=prompt,
        top_p=1,
        temperature=1,
        chat_counter=0,
        chatbot=[],
        api_name="/predict"
    )
    return result[0][0]  # Возврат сгенерированного текста

try:
    # Вход в админку WordPress
    driver.get("https://detectiv-dorama-lordfilm.ru/awesome")
    time.sleep(2)
    
    # Авторизация
    username = driver.find_element(By.ID, "user_login")
    password = driver.find_element(By.ID, "user_pass")
    login_button = driver.find_element(By.ID, "wp-submit")
    
    username.send_keys("awesome_author")  # Ваш логин
    password.send_keys("2958hnugOsteZL84ZMW3Ap5u")  # Ваш пароль
    login_button.click()
    
    # Шаг 1: Переход в плеер
    driver.get("https://detectiv-dorama-lordfilm.ru/wp-admin/post-new.php?post_type=player")
    time.sleep(1)
    
    # Ввод ID Кинопоиска
    kp_id_input = driver.find_element(By.ID, "acf-field_61587111f5d02")  # Замените на реальный селектор
    kp_id_input.send_keys(kp_id)
    time.sleep(1)
    
    # Шаг 2: Добавление рубрики
    driver.get("https://detectiv-dorama-lordfilm.ru/wp-admin/post-new.php")
    time.sleep(6)
    
    # Добавление новой рубрики
    add_category_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "category-add-toggle"))
    )
    add_category_button.click()
    print("1")
    # Ввод названия новой рубрики
    category_input = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "newcategory"))
    )
    category_name = title
    category_input.clear()  # Очистить поле перед вводом
    category_input.send_keys(category_name)
    print("2")
    # Клик по кнопке "Добавить новую рубрику"
    confirm_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "category-add-submit"))
    )
    confirm_button.click()
    print("3")
    print("Действия успешно выполнены!")
    
    if type_of_show == "tv-series":
        print("Устанавливаем галочку для типа 'tv-series'")
        checkbox_tv_series = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "in-type-19-2"))
        )
        if not checkbox_tv_series.is_selected():
            checkbox_tv_series.click()
    elif type_of_show == "movie":
        print("Устанавливаем галочку для типа 'movie'")
        checkbox_movie = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "in-type-2-2"))
        )
        if not checkbox_movie.is_selected():
            checkbox_movie.click()

    # Генерация текста для acf-editor-59
    acf_prompt = (
        f"Расскажи про сюжет {title}, так же напиши заголовок h2. Напиши длинный текст. не упоминай музыкальное сопровождение.Напиши БЕЗ ВЫДЕЛЕНИЯ ИХ НОМЕРА ФАКТОВ больше 10-15 интересных фактов про {title}, так же напиши заголовок h2. Перед списком должен быть вступительный текст. Напиши длинный текст. Всегда делай 4-5 абзацев, список цифрами, после списка текста не надо, заголовок оставь, перед списком текст.HTML-КОДОМ"
    )
    acf_editor_text = generate_text(acf_prompt)

    print(acf_editor_text)

    # Переключаемся на текстовый редактор для поля 'acf-editor-59'
    switch_editor_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "acf-editor-59-html")))
    switch_editor_button.click()

    print("Переключились на текстовый редактор.")

    # Находим текстовую область для ввода в 'acf-editor-59'
    text_area_1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//textarea[@id='acf-editor-59']")))
    text_area_1.clear()  
    text_area_1.send_keys(acf_editor_text)  # Вставляем сгенерированный текст
    print("Текст успешно введён в текстовую область acf-editor-59.")

    # Генерация текста для content
    review_prompt = f"Напиши обзор на {title}, без раскрытия сюжета. напиши длинный текст. не упоминай музыкальное сопровождение. 4-5 абзацев, заголовок не нужно."
    content_text = generate_text(review_prompt)

    # Переключаемся на текстовое поле "content"
    content_html_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content-html")))
    content_html_button.click()
    print("Переключились на текстовый редактор для поля 'content'.")

    # Ожидаем появления текстовой области для ввода второго текста
    text_area_2 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//textarea[@id='content']")))
    text_area_2.clear()  
    text_area_2.send_keys(content_text)  # Вставляем сгенерированный текст
    print("Текст успешно введён в текстовую область content.")

    # Генерация мета описания
    meta_description_prompt = f"Напиши meta description к фильму {title}. напиши сразу результат."
    meta_description_text = generate_text(meta_description_prompt)

    # Вставляем сгенерированный текст в мета-описание
    meta_description_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//div[@id='yoast-google-preview-description-metabox']//div[@class='public-DraftStyleDefault-block public-DraftStyleDefault-ltr']"))
    )

    # Вставка текста в мета-описание
    meta_description_field.click()
    meta_description_field.send_keys(meta_description_text)  # Вставляем сгенерированный текст
    print("Текст успешно введён в мета-описание.")

    # Определяем нежелательный текст
    unwanted_text = f"Напиши meta description к фильму {title}. напиши сразу результат."

    # Получаем текущее значение мета-описания
    current_meta_description = meta_description_field.get_attribute('innerText')

    # Поиск и удаление ненужной части
    if unwanted_text in current_meta_description:
        # Удаляем ненужный текст, выделив его
        meta_description_field.click()  # Кликаем на поле
        time.sleep(0.5)  # Задержка для надёжности
        
        # Выделяем весь текст
        meta_description_field.send_keys(Keys.CONTROL, 'a')  # Выделить всё
        time.sleep(0.5)  # Задержка для надёжности
        
        # Удаляем выделенный текст
        meta_description_field.send_keys(Keys.BACKSPACE)  # Удаляем выделение (все!)
        print("Нежелательный текст удалён из мета-описания.")

        # Вставляем весь остальной текст (за исключением нежелательной части)
        meta_description_field.send_keys(current_meta_description.replace(unwanted_text, '').strip())
    else:
        print("Нежелательный текст не найден в мета-описании.")

except Exception as e:
    print(f"Ошибка: {e}")
finally:
    input("Press Enter to close the browser...")
    driver.quit()

Вот код не трогай не улучашай