| import os |
| import gradio as gr |
| from dotenv import load_dotenv |
| import google.generativeai as genai |
| from youtube_transcript_api import YouTubeTranscriptApi |
|
|
| |
| load_dotenv() |
| GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") |
| genai.configure(api_key=GEMINI_API_KEY) |
|
|
| def get_video_id(url): |
| video_id = url.split("=")[-1] |
| if "&" in video_id: |
| video_id = video_id.split("&")[0] |
| return video_id |
|
|
| def get_video_transcripts(video_id): |
| try: |
| transcription_list = YouTubeTranscriptApi.get_transcript(video_id) |
| transcription = " ".join([transcript["text"] for transcript in transcription_list]) |
| return transcription |
| except Exception as e: |
| return str(e) |
|
|
| def summarize_video(youtube_url): |
| video_id = get_video_id(youtube_url) |
| transcriptions = get_video_transcripts(video_id) |
| |
| gemini_model = genai.GenerativeModel("gemini-pro") |
| prompt = f"Summarize the following transcription:\n{transcriptions}" |
| summary = gemini_model.generate_content(prompt).text |
| return summary |
|
|
| iface = gr.Interface(fn=summarize_video, inputs="text", outputs="text", title="YouTube Video Summarizer", description="Enter a YouTube URL to get a summary.") |
|
|
| if __name__ == "__main__": |
| iface.launch(share=True) |
| |