Spaces:
Runtime error
Runtime error
import gradio as gr | |
from langchain_groq import ChatGroq | |
from youtube_transcript_api import YouTubeTranscriptApi | |
from langchain_core.prompts import ChatPromptTemplate | |
from langchain_core.output_parsers import StrOutputParser | |
import os | |
def get_transcript(video_id): | |
def transcript_to_string(transcript): | |
transcript_text = '\n'.join([item['text'] for item in transcript]) | |
return transcript_text | |
try: | |
transcripts = YouTubeTranscriptApi.list_transcripts(video_id) | |
for transcript in transcripts: | |
if transcript.is_translatable: | |
transcript = transcript.fetch() | |
return transcript_to_string(transcript) | |
transcript = transcripts.find_manually_created_transcript(['en', 'tr']).fetch() | |
return transcript_to_string(transcript) | |
except Exception as e: | |
return "Sorry, the video cannot be transcribed." | |
def summarize_video(video_url, language): | |
video_id = video_url.split('v=')[-1].split('&')[0] | |
transcript = get_transcript(video_id) | |
model = ChatGroq( | |
model="llama-3.1-70b-versatile", | |
temperature=0, | |
max_tokens=None, | |
timeout=None, | |
max_retries=2, | |
) | |
system_template = """Below you will see a text. Read the text. First provide the major points that they discuss and then provide summaries for each major point. Your response should be in the language specified below. | |
Transcript: {transcript} | |
Language: {language}""" | |
prompt_template = ChatPromptTemplate.from_messages( | |
[("system", system_template)] | |
) | |
parser = StrOutputParser() | |
chain = prompt_template | model | parser | |
response = chain.invoke({"transcript": transcript, "language": language}) | |
return response | |
iface = gr.Interface( | |
fn=summarize_video, | |
inputs=[ | |
gr.Textbox(label="YouTube Video URL"), | |
gr.Textbox(label="Language for Summary") | |
], | |
outputs="text", | |
title="YouTube Video Summarizer", | |
description="Enter a YouTube video URL and the desired language for the summary." | |
) | |
iface.launch() |