from youtube_transcript_api import YouTubeTranscriptApi def extract_video_id(url: str) -> str: """YouTube URL에서 video ID 추출.""" if "youtu.be/" in url: return url.split("youtu.be/")[1].split("?")[0] if "v=" in url: return url.split("v=")[1].split("&")[0] raise ValueError(f"유효하지 않은 YouTube URL: {url}") def fetch_transcript(video_id: str) -> str: """YouTube 자막을 텍스트로 추출.""" ytt_api = YouTubeTranscriptApi() transcript = ytt_api.fetch(video_id, languages=["ko", "en"]) texts = [entry.text for entry in transcript if entry.text.strip()] return " ".join(texts)