{"record":{"id":"89873b8e0921445b","repo":"ytdl-org/youtube-dl","slug":"no-video-in-the-article","errorCode":null,"errorMessage":"no video in the article","messagePattern":"no video in the article","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/bleacherreport.py","lineNumber":86,"sourceCode":"            'view_count': int_or_none(article_data.get('hitCount')),\n        }\n\n        video = article_data.get('video')\n        if video:\n            video_type = video['type']\n            if video_type in ('cms.bleacherreport.com', 'vid.bleacherreport.com'):\n                info['url'] = 'http://bleacherreport.com/video_embed?id=%s' % video['id']\n            elif video_type == 'ooyala.com':\n                info['url'] = 'ooyala:%s' % video['id']\n            elif video_type == 'youtube.com':\n                info['url'] = video['id']\n            elif video_type == 'vine.co':\n                info['url'] = 'https://vine.co/v/%s' % video['id']\n            else:\n                info['url'] = video_type + video['id']\n            return info\n        else:\n            raise ExtractorError('no video in the article', expected=True)\n\n\nclass BleacherReportCMSIE(AMPIE):\n    _VALID_URL = r'https?://(?:www\\.)?bleacherreport\\.com/video_embed\\?id=(?P<id>[0-9a-f-]{36}|\\d{5})'\n    _TESTS = [{\n        'url': 'http://bleacherreport.com/video_embed?id=8fd44c2f-3dc5-4821-9118-2c825a98c0e1&library=video-cms',\n        'md5': '670b2d73f48549da032861130488c681',\n        'info_dict': {\n            'id': '8fd44c2f-3dc5-4821-9118-2c825a98c0e1',\n            'ext': 'mp4',\n            'title': 'Cena vs. Rollins Would Expose the Heavyweight Division',\n            'description': 'md5:984afb4ade2f9c0db35f3267ed88b36e',\n            'upload_date': '20150723',\n            'timestamp': 1437679032,\n\n        },\n        'expected_warnings': [\n            'Unable to download f4m manifest'","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/bleacherreport.py#L68-L104","documentation":"Raised by BleacherReportIE._real_extract when the article's embedded video JSON contains no video object it can map to a URL — the if/elif chain over video_type never produced info, so the else branch raises 'no video in the article' with expected=True. It means the article matched the extractor but its media widget is absent or of an unrecognized provider.","triggerScenarios":"Extracting a bleacherreport.com article whose embedded widget has no recognizable video_type (not cms/vid.bleacherreport.com, ooyala, youtube, or vine), or whose video array is empty — e.g. photo/slide articles, or a new video provider added by Bleacher Report that the mapping chain does not cover.","commonSituations":"Article links where the media is a tweet/photo loop; Bleacher Report migrating to a new player CDN so video_type strings no longer match the four known prefixes; JSON widget moved/renamed in a site redesign so an empty structure reaches the else.","solutions":["Confirm in a browser that the article actually plays a video; photo/text articles legitimately raise this.","If a video exists, inspect the page's embedded JSON and note the video_type value; add a branch mapping it to the right URL scheme at bleacherreport.py:86.","For ooyala/cms types the info['url'] is delegated — if the provider id format changed, the earlier branches mis-route and fall through; verify the video id shape.","Report new provider types upstream so the mapping chain is extended."],"exampleFix":"// before\nelif video_type == 'vine.co':\n    info['url'] = 'https://vine.co/v/%s' % video['id']\nelse:\n    info['url'] = video_type + video['id']\nreturn info\n// (else-branch of the outer 'if video')\nraise ExtractorError('no video in the article', expected=True)\n\n// after: include what was actually found to aid triage\nraise ExtractorError('no video in the article (video_type=%r, providers known: cms/vid.bleacherreport.com, ooyala.com, youtube.com, vine.co)' % video_type, expected=True)","handlingStrategy":"try-catch","validationCode":null,"typeGuard":"def is_known_bleacherreport_provider(video):\n    return isinstance(video, dict) and str(video.get('type', '')).startswith((\n        'cms.bleacherreport.com', 'vid.bleacherreport.com', 'ooyala.com', 'youtube.com', 'vine.co'))","tryCatchPattern":"try:\n    ydl.extract_info(article_url)\nexcept ExtractorError as e:\n    if str(e) == 'no video in the article':\n        skip_article(article_url)  # expected; article has no recognizable video\n    else:\n        raise","preventionTips":["Filter article lists to those whose embedded JSON contains a video object with a known provider type.","Treat 'no video in the article' as expected for photo/text articles.","Report unseen provider types upstream so the mapping chain stays current."],"tags":["bleacherreport","no-video","provider-mapping","article-embed","extractor"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}