{"record":{"id":"371adb31d6d9b351","repo":"ytdl-org/youtube-dl","slug":"no-media-links-available-for-s","errorCode":null,"errorMessage":"No media links available for %s","messagePattern":"No media links available for (.+?)","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"warning","filePath":"youtube_dl/extractor/lifenews.py","lineNumber":106,"sourceCode":"    }, {\n        'url': 'https://life.ru/t/новости/411489/manuel_vals_nazval_frantsiiu_tsieliu_nomier_odin_dlia_ighil',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(url, video_id)\n\n        video_urls = re.findall(\n            r'<video[^>]+><source[^>]+src=[\"\\'](.+?)[\"\\']', webpage)\n\n        iframe_links = re.findall(\n            r'<iframe[^>]+src=[\"\\']((?:https?:)?//embed\\.life\\.ru/(?:embed|video)/.+?)[\"\\']',\n            webpage)\n\n        if not video_urls and not iframe_links:\n            raise ExtractorError('No media links available for %s' % video_id)\n\n        title = remove_end(\n            self._og_search_title(webpage),\n            ' - Life.ru')\n\n        description = self._og_search_description(webpage)\n\n        view_count = self._html_search_regex(\n            r'<div[^>]+class=([\"\\']).*?\\bhits-count\\b.*?\\1[^>]*>\\s*(?P<value>\\d+)\\s*</div>',\n            webpage, 'view count', fatal=False, group='value')\n\n        timestamp = parse_iso8601(self._search_regex(\n            r'<time[^>]+datetime=([\"\\'])(?P<value>.+?)\\1',\n            webpage, 'upload date', fatal=False, group='value'))\n\n        common_info = {\n            'description': description,\n            'view_count': int_or_none(view_count),","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/lifenews.py#L88-L124","documentation":"Raised by the Lifenews extractor when the article page contains neither <video><source src=...> elements nor iframes pointing at embed.life.ru. It is not expected=True, so it can bubble up as an extractor error even for articles that legitimately have no media (text/photo-only posts).","triggerScenarios":"Downloading a lifenews.ru article URL that is a plain text/photo news post with no video markup, or one whose video embed markup changed so both regexes (native <source> and embed.life.ru iframes) fail to match.","commonSituations":"Bulk-archiving news feeds where many articles have no video; Life.ru changing their embed domain or markup; videos injected only via JS after load; old youtube-dl versions with stale iframe regexes.","solutions":["Check the article in a browser — if it truly has no video, skip such URLs during bulk runs","Update youtube-dl/yt-dlp in case the embed markup/regex changed","If the video is JS-injected, find the underlying embed URL in the page's scripts and pass it directly","For bulk jobs, pre-filter article URLs by a quick content check or tolerate this error per-URL"],"exampleFix":"# before: whole-channel bulk run stops on text-only posts\n# youtube-dl 'http://lifenews.ru/news/123456'\n\n# after: continue past media-less articles\n# youtube-dl --ignore-errors 'http://lifenews.ru/news/123456'","handlingStrategy":"try-catch","validationCode":"import re\n\ndef lifenews_page_has_media(page_html):\n    return bool(\n        re.search(r'<video[^>]+><source[^>]+src=[\"\\']', page_html)\n        or re.search(r'<iframe[^>]+src=[\"\\'](?:https?:)?//embed\\.life\\.ru/(?:embed|video)/', page_html)\n    )","typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    if 'No media links available' in str(e):\n        continue  # text-only article; expected during feed archiving\n    raise","preventionTips":["Use --ignore-errors for bulk news-site archiving","Pre-filter article HTML for video/iframe markup before invoking the extractor"],"tags":["lifenews","no-media","regex-breakage","extractor"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}