En este tutorial, presentamos un enfoque optimizado para extraer, procesar y analizar las transcripciones de video de YouTube utilizando Lyzrun ámbito progresista con AI diseñado para simplificar la interacción con datos textuales. Aprovechando la interfaz de chatbot intuitiva de Lyzr conexo con YouTube-Transcript-API y FPDF, los usuarios pueden convertir sin esfuerzo el contenido de video en documentos PDF estructurados y realizar observación perspicaces a través de interacciones dinámicas. Ideal para investigadores, educadores y creadores de contenido, Lyzr acelera el proceso de derivar ideas significativas, suscitar resúmenes y formular preguntas creativas directamente de los bienes multimedia.
!pip install lyzr youtube-transcript-api fpdf2 ipywidgets
!apt-get update -qq && apt-get install -y fonts-dejavu-core
Configuramos el entorno necesario para el tutorial. El primer comando instala bibliotecas esenciales de Python, incluidas las LYZR para el chat con AI, YouTube-Transcript-API para la procedencia de transcripción, FPDF2 para la engendramiento de PDF y ipywidgets para crear interfaces de chat interactivas. El segundo comando asegura que la fuente de sans deJavu esté instalada en el sistema para aprobar la representación de texto unicode completo adentro de los archivos PDF generados.
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
os.environ('OPENAI_API_KEY') = "YOUR_OPENAI_API_KEY_HERE"
Configuramos el llegada a la tecla API de OpenAI para el tutorial. Importamos los módulos OS y OpenAI, luego recuperamos la secreto API de las variables de entorno (o la establecemos directamente a través de OS.environ). Esta configuración es esencial para usar las potentes modelos de OpenAI adentro del ámbito LYZR.
import json
from lyzr import ChatBot
from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound, CouldNotRetrieveTranscript
from fpdf import FPDF
from ipywidgets import Textarea, Button, Output, Layout
from IPython.display import display, Markdown
import re
Mira el completo Cuaderno aquí
Importamos bibliotecas esenciales necesarias para el tutorial. Incluye JSON para el manejo de datos, el chatbot de Lyzr para capacidades de chat impulsadas por AI y YouTubETranscriptapi para extraer transcripciones de los videos de YouTube. Encima, trae FPDF para la engendramiento PDF, ipywidgets para componentes interactivos de la interfaz de becario y ipython.display para representar el contenido de markdown en cuadernos. El módulo RE todavía se importa para operaciones de expresión regulares en tareas de procesamiento de texto.
def transcript_to_pdf(video_id: str, output_pdf_path: str) -> bool:
"""
Download YouTube transcript (manual or coche) and write it into a PDF
using the system-installed DejaVuSans.ttf for full Unicode support.
Fixed to handle long words and text formatting issues.
"""
try:
entries = YouTubeTranscriptApi.get_transcript(video_id)
except (TranscriptsDisabled, NoTranscriptFound, CouldNotRetrieveTranscript):
try:
entries = YouTubeTranscriptApi.get_transcript(video_id, languages=('en'))
except Exception:
print(f"(!) No transcript for {video_id}")
return False
except Exception as e:
print(f"(!) Error fetching transcript for {video_id}: {e}")
return False
text = "n".join(e('text') for e in entries).strip()
if not text:
print(f"(!) Empty transcript for {video_id}")
return False
pdf = FPDF()
pdf.add_page()
font_path = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
try:
if os.path.exists(font_path):
pdf.add_font("DejaVu", "", font_path)
pdf.set_font("DejaVu", size=10)
else:
pdf.set_font("Arial", size=10)
except Exception:
pdf.set_font("Arial", size=10)
pdf.set_margins(20, 20, 20)
pdf.set_auto_page_break(coche=True, margin=25)
def process_text_for_pdf(text):
text = re.sub(r's+', ' ', text)
text = text.replace('nn', 'n')
processed_lines = ()
for paragraph in text.split('n'):
if not paragraph.strip():
continue
words = paragraph.split()
processed_words = ()
for word in words:
if len(word) > 50:
chunks = (word(i:i+50) for i in range(0, len(word), 50))
processed_words.extend(chunks)
else:
processed_words.append(word)
processed_lines.append(' '.join(processed_words))
return processed_lines
processed_lines = process_text_for_pdf(text)
for line in processed_lines:
if line.strip():
try:
pdf.multi_cell(0, 8, line.encode('utf-8', 'replace').decode('utf-8'), align='L')
pdf.ln(2)
except Exception as e:
print(f"(!) Warning: Skipped problematic line: {str(e)(:100)}...")
continue
try:
pdf.output(output_pdf_path)
print(f"(+) PDF saved: {output_pdf_path}")
return True
except Exception as e:
print(f"(!) Error saving PDF: {e}")
return False
Mira el completo Cuaderno aquí
Esta función, transcript_to_pdf, automatiza la conversión de transcripciones de video de YouTube en documentos PDF limpios y legibles. Recupera la transcripción utilizando YouTubETranscriptapi, maneja con donosura excepciones como transcripciones no disponibles, y formatea el texto para evitar problemas como palabras largas que rompen el diseño PDF. La función todavía garantiza el soporte de Unicode adecuado mediante el uso de la fuente DeJavusans (si está acondicionado) y optimiza el texto para la representación PDF dividiendo palabras demasiado largas y manteniendo márgenes consistentes. Devuelve cierto si el PDF se genera con éxito o hipócrita si se producen errores.
def create_interactive_chat(agent):
input_area = Textarea(
placeholder="Type a question…", layout=Layout(width="80%", height="80px")
)
send_button = Button(description="Send", button_style="success")
output_area = Output(layout=Layout(
border="1px solid gray", width="80%", height="200px", overflow='coche'
))
def on_send(btn):
question = input_area.value.strip()
if not question:
return
with output_area:
print(f">> You: {question}")
try:
print("<< Bot:", agent.chat(question), "n")
except Exception as e:
print(f"(!) Error: {e}n")
send_button.on_click(on_send)
display(input_area, send_button, output_area)
Mira el completo Cuaderno aquí
Esta función, create_interactive_chat, crea una interfaz de chat simple e interactiva adentro de Colab. El uso de iPyWidgets proporciona un campo de acción de entrada de texto (TextAREA) para que los usuarios escriban preguntas, un retoño de expedición (retoño) para activar el chat y un campo de acción de salida (salida) para mostrar la conversación. Cuando el becario hace clic en Cursar, la pregunta ingresada se pasa al agente de chatbot Lyzr, que genera y muestra una respuesta. Esto permite a los usuarios participar en sesiones dinámicas de preguntas y respuestas basadas en el observación de transcripción, lo que hace que la interacción como una conversación en vivo con el maniquí AI.
def main():
video_ids = ("dQw4w9WgXcQ", "jNQXAC9IVRw")
processed = ()
for vid in video_ids:
pdf_path = f"{vid}.pdf"
if transcript_to_pdf(vid, pdf_path):
processed.append((vid, pdf_path))
else:
print(f"(!) Skipping {vid} — no transcript available.")
if not processed:
print("(!) No PDFs generated. Please try other video IDs.")
return
first_vid, first_pdf = processed(0)
print(f"(+) Initializing PDF-chat agent for video {first_vid}…")
bot = ChatBot.pdf_chat(
input_files=(first_pdf)
)
questions = (
"Summarize the transcript in 2–3 sentences.",
"What are the top 5 insights and why?",
"List any recommendations or action items mentioned.",
"Write 3 quiz questions to test comprehension.",
"Suggest 5 creative prompts to explore further."
)
responses = {}
for q in questions:
print(f"(?) {q}")
try:
resp = bot.chat(q)
except Exception as e:
resp = f"(!) Agent error: {e}"
responses(q) = resp
print(f"(/) {resp}n" + "-"*60 + "n")
with open('responses.json','w',encoding='utf-8') as f:
json.dump(responses,f,indent=2)
md = "# Transcript Analysis Reportnn"
for q,a in responses.items():
md += f"## Q: {q}n{a}nn"
with open('report.md','w',encoding='utf-8') as f:
f.write(md)
display(Markdown(md))
if len(processed) > 1:
print("(+) Generating comparison…")
_, pdf1 = processed(0)
_, pdf2 = processed(1)
compare_bot = ChatBot.pdf_chat(
input_files=(pdf1, pdf2)
)
comparison = compare_bot.chat(
"Compare the main themes of these two videos and highlight key differences."
)
print("(+) Comparison Result:n", comparison)
print("n=== Interactive Chat (Video 1) ===")
create_interactive_chat(bot)
Mira el completo Cuaderno aquí
Nuestra función principal () sirve como el compensador central para toda la tubería tutorial. Procesa una letanía de ID de video de YouTube, convirtiendo las transcripciones disponibles en archivos PDF utilizando la función Transcript_TO_PDF. Una vez que se generan PDFS, se inicializa un agente LYZR PDF-CHAT en el primer PDF, lo que permite que el maniquí responda preguntas predefinidas, como resumir el contenido, identificar ideas y suscitar preguntas de prueba. Las respuestas se almacenan en un archivo de respuestas.json y se formatean en un crónica de Markdown (Report.MD). Si se crean múltiples PDF, la función los compara utilizando el agente LYZR para resaltar las diferencias secreto entre los videos. Finalmente, inicia una interfaz de chat interactiva con el becario, que permite conversaciones dinámicas basadas en el contenido de la transcripción, que muestra el poder de Lyzr para un observación PDF sin interrupciones e interacciones impulsadas por IA.
if __name__ == "__main__":
main()
Nos aseguramos de que la función Main () se ejecute solo cuando el script se ejecuta directamente, no cuando se importa como un módulo. Es una mejor ejercicio en los scripts de Python para controlar el flujo de ejecución.
En conclusión, al integrar Lyzr en nuestro flujo de trabajo como se demuestra en este tutorial, podemos elaborar sin esfuerzo los videos de YouTube en un conocimiento perspicaz y procesable. La capacidad inteligente de PDF-CHAT de LYZR simplifica la procedencia de temas centrales y la engendramiento de resúmenes completos, y todavía permite una exploración interactiva e interactiva de contenido a través de una interfaz conversacional intuitiva. Adoptar Lyzr permite a los usuarios desbloquear ideas más profundas y mejorar significativamente la productividad al trabajar con transcripciones de video, ya sea para investigación académica, fines educativos o observación de contenido creativo.
Mira el Cuaderno aquí. Todo el crédito por esta investigación va a los investigadores de este tesina. Encima, siéntete suelto de seguirnos Gorjeo Y no olvides unirte a nuestro 95k+ ml de subreddit y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como patrón e ingeniero fantasioso, ASIF se compromete a usar el potencial de la inteligencia fabricado para el acertadamente social. Su esfuerzo más flamante es el emanación de una plataforma de medios de inteligencia fabricado, MarktechPost, que se destaca por su cobertura profunda de noticiario de estudios inevitable y de estudios profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el conocido.