import os from youtube_transcript_api import YouTubeTranscriptApi from youtube_transcript_api.proxies import GenericProxyConfig from langchain_core.tools import tool @tool def youtube_transcript(video_url: str) -> str: """ Extracts the transcript from a YouTube video url Args: video_url: The url of the YouTube video Returns: The transcript of the YouTube video """ print(f"Extracting transcript from: {video_url}") try: ytt_api = YouTubeTranscriptApi() if os.getenv("PROXY_URL"): ytt_api = YouTubeTranscriptApi( proxy_config=GenericProxyConfig( http_url=os.getenv("PROXY_URL"), https_url=os.getenv("PROXY_URL"), ) ) video_id = get_video_id(video_url) transcript = ytt_api.fetch(video_id) print(f"Transcript: {transcript}") return transcript except Exception as e: print(f"Error extracting transcript: {e}") return "" def get_video_id(url: str) -> str: """ Extracts the video id from a YouTube url """ print(f"Extracting video id from: {url}") return url.split("v=")[1]