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.