{"record":{"id":"49ae5cf82e026062","repo":"ytdl-org/youtube-dl","slug":"no-videos-found","errorCode":null,"errorMessage":"No videos found","messagePattern":"No videos found","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/biobiochiletv.py","lineNumber":70,"sourceCode":"        },\n    }, {\n        'url': 'http://tv.biobiochile.cl/notas/2015/10/22/ninos-transexuales-de-quien-es-la-decision.shtml',\n        'only_matching': True,\n    }, {\n        'url': 'http://tv.biobiochile.cl/notas/2015/10/21/exclusivo-hector-pinto-formador-de-chupete-revela-version-del-ex-delantero-albo.shtml',\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        rudo_url = self._search_regex(\n            r'<iframe[^>]+src=(?P<q1>[\\'\"])(?P<url>(?:https?:)?//rudo\\.video/vod/[0-9a-zA-Z]+)(?P=q1)',\n            webpage, 'embed URL', None, group='url')\n        if not rudo_url:\n            raise ExtractorError('No videos found')\n\n        title = remove_end(self._og_search_title(webpage), ' - BioBioChile TV')\n\n        thumbnail = self._og_search_thumbnail(webpage)\n        uploader = self._html_search_regex(\n            r'<a[^>]+href=[\"\\'](?:https?://(?:busca|www)\\.biobiochile\\.cl)?/(?:lista/)?(?:author|autor)[^>]+>(.+?)</a>',\n            webpage, 'uploader', fatal=False)\n\n        return {\n            '_type': 'url_transparent',\n            'url': rudo_url,\n            'id': video_id,\n            'title': title,\n            'thumbnail': thumbnail,\n            'uploader': uploader,\n        }\n","sourceCodeStart":52,"sourceCodeEnd":87,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/biobiochiletv.py#L52-L87","documentation":"Raised by BioBioChileTVIE._real_extract when the article page HTML contains no iframe whose src points at rudo.video/vod/... — the embedded player BioBioChile articles use. The regex search returns None (the search was non-fatal), and the extractor converts that into 'No videos found'. It means the URL matched the extractor but the article genuinely has (or appears to have) no video.","triggerScenarios":"Extracting a BioBioChile article URL that embeds no Rudo video (text-only or photo article), or one whose player iframe uses a different host/format (rudo URL pattern changed, lazy-loaded src, or a new player domain) so the regex at biobiochiletv.py:70 fails to match.","commonSituations":"Article links shared from news feeds where only some articles contain video; Rudo changing embed URL shape (e.g. rudo.video/vod vs new path); iframes injected by JavaScript after initial HTML so the downloaded source lacks them; ad/tracking iframes confusing manual inspection.","solutions":["Open the article in a browser and confirm a video player actually exists; many articles are text-only.","If a player exists, view source and check the iframe src — if Rudo's URL format changed, update the regex (host/path pattern).","If the iframe is JS-injected, the extractor would need to parse the embed URL from a script variable instead; report upstream.","For the direct video case, extract the Rudo URL yourself (rudo.video/vod/<id>) and pass it to the Rudo extractor."],"exampleFix":"// before - caller feeds any biobiochile article URL to youtube-dl\nYoutubeDL().extract_info('https://www.biobiochile.cl/noticias/...', download=True)\n\n// after - pre-check the page for a rudo embed before invoking the extractor\nimport re, requests\nhtml = requests.get(article_url).text\nm = re.search(r'<iframe[^>]+src=[\"\\'](https?:)?//rudo\\.video/vod/[0-9a-zA-Z]+[\"\\']', html)\nif not m:\n    print('article has no embedded video; skip')\nelse:\n    YoutubeDL().extract_info(m.group(0).split('src=')[1].strip('\"\\''), download=True)","handlingStrategy":"validation","validationCode":"import re, requests\n\ndef biobio_article_has_video(url):\n    html = requests.get(url).text\n    return bool(re.search(r'<iframe[^>]+src=[\"\\'](?:https?:)?//rudo\\.video/vod/[0-9a-zA-Z]+[\"\\']', html))","typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(article_url)\nexcept ExtractorError as e:\n    if str(e) == 'No videos found':\n        skip_article(article_url)  # text-only article or embed format change; not transient\n    else:\n        raise","preventionTips":["Pre-filter article URLs for a rudo.video/vod iframe before extraction.","For feeds, extract the rudo URL directly and hand it to the Rudo extractor.","If the article visibly plays video, suspect an iframe-format change and patch the regex."],"tags":["biobiochile","iframe-embed","rudo","no-video","webpage-scraping"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}