{"record":{"id":"6d25326556bad75c","repo":"ytdl-org/youtube-dl","slug":"this-post-doesn-t-contain-a-video","errorCode":null,"errorMessage":"This post doesn't contain a video","messagePattern":"This post doesn't contain a video","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/appleconnect.py","lineNumber":38,"sourceCode":"            'uploader': 'Drake',\n            'thumbnail': r're:^https?://.*\\.jpg$',\n            'upload_date': '20150710',\n            'timestamp': 1436545535,\n        },\n    }, {\n        'url': 'https://itunes.apple.com/us/post/sa.0fe0229f-2457-11e5-9f40-1bb645f2d5d9',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        webpage = self._download_webpage(url, video_id)\n\n        try:\n            video_json = self._html_search_regex(\n                r'class=\"auc-video-data\">(\\{.*?\\})', webpage, 'json')\n        except ExtractorError:\n            raise ExtractorError('This post doesn\\'t contain a video', expected=True)\n\n        video_data = self._parse_json(video_json, video_id)\n        timestamp = str_to_int(self._html_search_regex(r'data-timestamp=\"(\\d+)\"', webpage, 'timestamp'))\n        like_count = str_to_int(self._html_search_regex(r'(\\d+) Loves', webpage, 'like count', default=None))\n\n        return {\n            'id': video_id,\n            'url': video_data['sslSrc'],\n            'title': video_data['title'],\n            'description': video_data['description'],\n            'uploader': video_data['artistName'],\n            'thumbnail': video_data['artworkUrl'],\n            'timestamp': timestamp,\n            'like_count': like_count,\n        }\n","sourceCodeStart":20,"sourceCodeEnd":54,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/appleconnect.py#L20-L54","documentation":"Raised by the AppleConnect extractor when the page HTML does not contain a class=\"auc-video-data\" JSON block. The _html_search_regex failure is caught and re-raised as this user-facing message. Marked expected=True: the itunes post simply has no embedded video.","triggerScenarios":"Extracting an itunes.apple.com/post/... URL whose page lacks the auc-video-data element; photo-only or text-only posts; redesigned pages that renamed the CSS class.","commonSituations":"URLs for non-video posts (articles, image galleries); old post URLs redirected to pages without the video block; class rename breaking detection site-wide.","solutions":["Confirm the post actually contains a video by opening it in a browser","If the page changed, inspect current HTML for the new embed block and check upstream yt-dlp for the updated regex"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Check the page for the video-data block before extracting\nimport requests\nhtml = requests.get(url).text\nif 'auc-video-data' not in html:\n    skip(url, reason='post has no embedded video')","typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    if \"doesn't contain a video\" in str(e):\n        skip(url)  # not a video post; nothing to download","preventionTips":["Only queue itunes.apple.com/post URLs known to embed video; most posts are text/image","If every post fails, suspect a CSS-class rename in Apple's markup and check extractor updates"],"tags":["appleconnect","itunes","content-missing","no-video"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}