Ya para finalizar nuestro código procedemos a guardar nuestro archivo:
with open(f"{carpeta}/{nombre_archivo}_articulo.txt", 'w') as f:
f.write(respuesta)
print(f"Artículo generado guardado en {carpeta}/{nombre_archivo}_articulo.txt")
print(respuesta)
Todo nuestro código quedara así:
import openai
import sys
import os
import whisper
import yt_dlp
def descargar_youtube(url):
title = input("Ingresa el nuevo nombre de tu video a analizar: ")
ydl_opts = {
'format': 'best',
'outtmpl': f'{title}.%(ext)s',
'noplaylist': True,
'download': False
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
title = title + f".mp4"
return title
print("¿Qué tipo de video desea analizar?")
print("1. Video descargado")
print("2. Video de YouTube")
opcion = int(input("Elija una opción: "))
if opcion == 1:
archivo_video = input("Ingrese el nombre del video: ")
elif opcion == 2:
url = input("Ingrese la URL del video de YouTube: ")
archivo_video = descargar_youtube(url)
else:
print("Opción no válida.")
sys.exit()
nombre_archivo = os.path.splitext(archivo_video)[0]
carpeta = nombre_archivo
if not os.path.exists(carpeta):
os.makedirs(carpeta)
archivo_audio = f"{carpeta}/{nombre_archivo}.wav"
os.system(f'ffmpeg -i "{archivo_video}" -vn "{archivo_audio}"')
model = whisper.load_model("base")
result = model.transcribe(archivo_audio)
archivo_texto = f"{carpeta}/{nombre_archivo}.txt"
with open(archivo_texto, 'w') as f:
f.write(result["text"])
print(f"Transcripción guardada en {archivo_texto}")
opciones = {
1: "Crea un resumen de este texto",
2: "Crea un artículo original basado en este texto",
3: "Crea un post para redes sociales basado en este texto",
4: "Crea un correo basado en este texto",
5: "Introduce un comando personalizado"
}
opcion = int(input("¿Qué desea hacer con la información del video?\n1. Crear un resumen\n2. Crear un artículo original\n3. Crear un post para redes sociales\n4. Crear un correo\n5. Introducir un comando personalizado\nElija una opción: "))
openai.api_key = "TU-API"
if opcion in opciones:
if opcion == 5:
prompt_personalizado = input("Introduzca el comando personalizado: ")
prompt = prompt_personalizado + f"{result['text']}"
else:
prompt = f"{opciones[opcion]}: '{result['text']}'"
modelo = "gpt-3.5-turbo"
mensaje = [
{"role":"system","content":"Eres un experto en redacción, resúmenes y creación de títulos."},
{"role":"user","content":prompt}
]
response = openai.ChatCompletion.create(
model = modelo,
messages = mensaje,
temperature= 0.8,
max_tokens=1024
)
respuesta = response["choices"][0]["message"]["content"]
else:
print("Opción inválida. Inténtelo de nuevo.")
with open(f"{carpeta}/{nombre_archivo}_articulo.txt", 'w') as f:
f.write(respuesta)
print(f"Artículo generado guardado en {carpeta}/{nombre_archivo}_articulo.txt")
print(respuesta)
Nota del maestro: Recuerda que este curso es gratuito y no cuenta con soporte. Si tienes problemas o dudas, puedes escribirme en Twitter haciendo clic aquí y esperar a que tenga un tiempo libre para poder contestarte. También puedes considerar tomar el curso profesional en nuestra plataforma de Azul School, que incluye soporte prioritario para todos nuestros cursos y muchos más beneficios. Haz clic aquí para comprar tu membresía anual u obtener más información al respecto.