import re def get_youtube_id(url): """Extracts the video ID from a YouTube URL.""" if not url: return None # regex for extracting youtube id # Supports: # - https://www.youtube.com/watch?v=VIDEO_ID # - https://youtu.be/VIDEO_ID # - https://www.youtube.com/embed/VIDEO_ID # - https://www.youtube.com/live/VIDEO_ID # - https://m.youtube.com/watch?v=VIDEO_ID patterns = [ r'(?:v=|\/)([0-9A-Za-z_-]{11}).*', r'(?:youtu\.be\/)([0-9A-Za-z_-]{11})', r'(?:embed\/)([0-9A-Za-z_-]{11})', r'(?:live\/)([0-9A-Za-z_-]{11})', ] for pattern in patterns: match = re.search(pattern, url) if match: return match.group(1) return None test_urls = [ "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "https://youtu.be/dQw4w9WgXcQ", "https://www.youtube.com/embed/dQw4w9WgXcQ", "https://www.youtube.com/live/dQw4w9WgXcQ?feature=share", "https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=RDdQw4w9WgXcQ", "invalid-url" ] for url in test_urls: print(f"URL: {url} -> ID: {get_youtube_id(url)}")