Contestando «People Also Ask» desde ChatGPT

Este pequeño script utiliza las librerias «sync playwright» y «people_also_ask» para enviar mensajes al chatGPT y recibirlos desde python en donde podemos realizar cualquier operación: … almacenarlos localmente, publicarlos en nuestro CMS … etc lo que se te ocurra:

Instalación de Sync Playwright: «pip install playwright» y después «playwright install»

import people_also_ask
import time
from playwright.sync_api import sync_playwright
import os
from colorama import Fore, init

init(autoreset=True)
os.system("cls")

PLAY = sync_playwright().start()
# Si tienes problemas para autentificarte con Chrome prueba con Firefox
# BROWSER = PLAY.firefox.launch_persistent_context( channel ="firefox", user_data_dir="/tmp/playwright", headless=False,)
BROWSER = PLAY.chromium.launch_persistent_context(channel ="chrome", user_data_dir="/tmp/playwright", headless=False,)
PAGE = BROWSER.new_page()
def get_input_box():
    return PAGE.query_selector("div[class*='PromptTextarea__TextareaWrapper-sc-4snkpf-0']").query_selector("textarea")

def is_logged_in():
    try:
        return get_input_box() is not None
    except AttributeError:
        return False

def send_message(message):
    # Envía el mensaje
    box = get_input_box()
    box.click()
    box.fill(message)
    box.press("Enter")
    while PAGE.query_selector(".result-streaming") is not None:
        time.sleep(0.1)

def get_last_message():
    #Recibe el último mensaje
    page_elements = PAGE.query_selector_all("div[class*='ConversationItem__Message']")
    last_element = page_elements[-1]
    return last_element.inner_text()

def chat(faq):
    message = faq
    print(Fore.MAGENTA+"Enviando Mensaje: ", message)
    send_message(message)
    response = get_last_message()
    print(Fore.MAGENTA+"Respuesta: ", response)
    return response

def start_browser():
    PAGE.goto("https://chat.openai.com/")
    if not is_logged_in():
        print("Inicia sesión en OpenAI Chat")
        print("Presiona enter cuando termines")
        input()
    else:
        print(Fore.LIGHTYELLOW_EX+ "Conectado a ChatGPT\n")
        listaFAQ=["La Energia Solar","El coche Electrico"] #Añadir consultas
        for QFaq in listaFAQ:
            print("People also Ask sobre : " + Fore.GREEN+ QFaq +"\n")
            data = people_also_ask.get_related_questions(QFaq)
            for faq in data:
                chat(faq)
                print("\n----------------\n")

if __name__ == "__main__":
    start_browser()

Si no consigues que te funcione a la primera, comprueba el selector de la zona de texto (línea 17) coincide con el que indiques en el código.

La idea está basada en un interesante script de Daniel Gross que utiliza Chat GPT para enviar a Whatsapp.

Chat GPT
Imágenes generadas con Stable Diffusion acorde al contenido

Deja un comentario