ytdl-org/youtube-dl · error · ExtractorError
No videos found
Error message
No videos found
What it means
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.
Source
Thrown at youtube_dl/extractor/biobiochiletv.py:70
},
}, {
'url': 'http://tv.biobiochile.cl/notas/2015/10/22/ninos-transexuales-de-quien-es-la-decision.shtml',
'only_matching': True,
}, {
'url': 'http://tv.biobiochile.cl/notas/2015/10/21/exclusivo-hector-pinto-formador-de-chupete-revela-version-del-ex-delantero-albo.shtml',
'only_matching': True,
}]
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
rudo_url = self._search_regex(
r'<iframe[^>]+src=(?P<q1>[\'"])(?P<url>(?:https?:)?//rudo\.video/vod/[0-9a-zA-Z]+)(?P=q1)',
webpage, 'embed URL', None, group='url')
if not rudo_url:
raise ExtractorError('No videos found')
title = remove_end(self._og_search_title(webpage), ' - BioBioChile TV')
thumbnail = self._og_search_thumbnail(webpage)
uploader = self._html_search_regex(
r'<a[^>]+href=["\'](?:https?://(?:busca|www)\.biobiochile\.cl)?/(?:lista/)?(?:author|autor)[^>]+>(.+?)</a>',
webpage, 'uploader', fatal=False)
return {
'_type': 'url_transparent',
'url': rudo_url,
'id': video_id,
'title': title,
'thumbnail': thumbnail,
'uploader': uploader,
}
View on GitHub (pinned to 956b8c5855)
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.
Example fix
// before - caller feeds any biobiochile article URL to youtube-dl
YoutubeDL().extract_info('https://www.biobiochile.cl/noticias/...', download=True)
// after - pre-check the page for a rudo embed before invoking the extractor
import re, requests
html = requests.get(article_url).text
m = re.search(r'<iframe[^>]+src=["\'](https?:)?//rudo\.video/vod/[0-9a-zA-Z]+["\']', html)
if not m:
print('article has no embedded video; skip')
else:
YoutubeDL().extract_info(m.group(0).split('src=')[1].strip('"\''), download=True) Defensive patterns
Strategy: validation
Validate before calling
import re, requests
def biobio_article_has_video(url):
html = requests.get(url).text
return bool(re.search(r'<iframe[^>]+src=["\'](?:https?:)?//rudo\.video/vod/[0-9a-zA-Z]+["\']', html)) Try / catch
try:
ydl.extract_info(article_url)
except ExtractorError as e:
if str(e) == 'No videos found':
skip_article(article_url) # text-only article or embed format change; not transient
else:
raise Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/49ae5cf82e026062.
Report an issue: GitHub.