পাইথন প্রজেক্টস ও লাইব্রেরি

Agent 12: YouTube Video Summarizer Agent

১. এই এজেন্ট কী কাজ করবে?

১ ঘণ্টার একটি টিউটোরিয়াল বা পডকাস্ট দেখার মতো সময় সবসময় থাকে না। এই এজেন্টকে আপনি শুধু ইউটিউব ভিডিওর লিংক দেবেন। সে ভিডিওটির সাবটাইটেল বা ট্রান্সক্রিপ্ট (Transcript) ডাউনলোড করবে এবং AI ব্যবহার করে পুরো ভিডিওর মূল পয়েন্টগুলো (Bullet Points) ৫ মিনিটের মধ্যে আপনার সামনে হাজির করবে।

২. কী কী টুলস এবং লাইব্রেরি লাগবে?

  • youtube-transcript-api: ইউটিউব ভিডিও থেকে লেখাগুলো বের করার জন্য। (এটি requests এর চেয়ে অনেক সহজ)
  • google-generativeai: ট্রান্সক্রিপ্ট পড়ে সামারি করার জন্য।

৩. এ টু জেড কোড (A to Z Code)

প্রথমে টার্মিনালে pip install youtube-transcript-api google-generativeai ইনস্টল করে নিন। এরপর কোডটি agent_yt_summarizer.py নামে সেভ করুন।

from youtube_transcript_api import YouTubeTranscriptApi
import google.generativeai as genai
import re

class YouTubeSummarizerAgent:
    def __init__(self, api_key):
        genai.configure(api_key=api_key)
        self.model = genai.GenerativeModel('gemini-1.5-flash')

    def get_video_id(self, url):
        # ইউটিউব লিংক থেকে ভিডিওর ID বের করা (যেমন: v=dQw4w9WgXcQ থেকে dQw4w9WgXcQ)
        match = re.search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url)
        if match:
            return match.group(1)
        return None

    def fetch_transcript(self, video_id):
        print("[Agent] ভিডিও থেকে অডিওর লেখাগুলো (Transcript) নামানো হচ্ছে...")
        try:
            transcript_list = YouTubeTranscriptApi.get_transcript(video_id)
            # সবগুলো লাইনের টেক্সট একসাথে জোড়া দেওয়া
            full_text = " ".join([item['text'] for item in transcript_list])
            return full_text
        except Exception as e:
            print(f"[Agent] সাবটাইটেল/ট্রান্সক্রিপ্ট পাওয়া যায়নি: {e}")
            return None

    def summarize_video(self, url):
        video_id = self.get_video_id(url)
        if not video_id:
            print("[Agent] ভুল ইউটিউব লিংক!")
            return

        transcript = self.fetch_transcript(video_id)
        if not transcript:
            return

        print("[Agent] AI ভিডিওটি বুঝতে চেষ্টা করছে...")
        # ভিডিও অনেক বড় হলে প্রথম 15000 ক্যারেক্টার নিচ্ছি যেন API লিমিট পার না হয়
        short_transcript = transcript[:15000] 

        prompt = f"""
        You are an AI assistant. I will give you the transcript of a YouTube video.
        Please provide a structured summary of the video including:
        1. Main Topic
        2. 5 Key Takeaways (in bullet points)
        
        Transcript:
        {short_transcript}
        """

        response = self.model.generate_content(prompt)
        print("\n" + "="*50)
        print("🎥 ভিডিও সামারি:")
        print("="*50)
        print(response.text)

if __name__ == "__main__":
    API_KEY = "YOUR_GEMINI_API_KEY_HERE"
    agent = YouTubeSummarizerAgent(API_KEY)
    
    # একটি ইউটিউব ভিডিওর লিংক দিন
    video_url = input("YouTube Video Link দিন: ")
    agent.summarize_video(video_url)

৪. কীভাবে এটি আরও অ্যাডভান্সড করবেন?

  • ভিডিওর ট্রান্সক্রিপ্ট যদি বাংলায় থাকে, তবে youtube_transcript_api এ ল্যাঙ্গুয়েজ হিসেবে languages=['bn', 'en'] প্যারামিটার দিতে পারেন।
  • সামারিটি একটি PDF বা Word ফাইলে সেভ করানোর লজিক যুক্ত করতে পারেন।