"""Check whether this machine's IP is blocked by YouTube for transcripts. Usage: python check_block.py [VIDEO_ID ...]""" import sys from youtube_transcript_api import YouTubeTranscriptApi from youtube_transcript_api._errors import RequestBlocked, CouldNotRetrieveTranscript ids = sys.argv[1:] or ["jNQXAC9IVRw", "kJQP7kiw5Fk", "arj7oStGLkU", "8jPQjjsBbIc", "UF8uR6Z6KLc"] api = YouTubeTranscriptApi() blocked = 0 for vid in ids: try: t = api.fetch(vid) print(f"{vid} OK {len(t)} snippets") except RequestBlocked as e: # IpBlocked is a subclass blocked += 1 print(f"{vid} BLOCKED {type(e).__name__}") except CouldNotRetrieveTranscript as e: print(f"{vid} VIDEO-LEVEL {type(e).__name__}") print(f"{blocked}/{len(ids)} blocked:", "this IP is blocked" if blocked > len(ids) // 2 else "IP looks fine")