from youtube_transcript_api import YouTubeTranscriptApi from youtube_transcript_api.formatters import TextFormatter from transformers import pipeline import re import gradio pipe = pipeline("summarization", model="Falconsai/text_summarization") def extract_youtube_id(url): """ Extracts the YouTube video ID from a given URL. Args: url (str): The YouTube video URL. Returns: str: The extracted video ID, or None if no match is found. """ # Regular expression to match YouTube video IDs pattern = r"(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})" match = re.search(pattern, url) if match: return match.group(1) return None def summary(text_transcript): output = pipe(text_transcript) return output[0]['summary_text'] def get_youtube_transcript(link): video_id= extract_youtube_id(link) if not video_id: return "Video ID could not be extracted" try: transcript= YouTubeTranscriptApi.get_transcript(video_id) # fetches the trancript formatter= TextFormatter() text_transcript = formatter.format_transcript(transcript) # This will format the transcript summarized_text = summary(text_transcript) return summarized_text except Exception as e: return f"An error has occured: {e}"