ytdl-org/youtube-dl · error · ExtractorError
Can't find any video
Error message
Can't find any video
What it means
Raised by IqiyiIE._real_extract when the downloaded page contains no data-player-tvid / data-shareplattrigger-tvid attribute AND the page also does not parse as a playlist. Without a tvid the extractor can neither fetch stream data nor treat the URL as a playlist, so it gives up.
Source
Thrown at youtube_dl/extractor/iqiyi.py:352
if len(vlist) < PAGE_SIZE:
break
return self.playlist_result(entries, album_id, album_title)
def _real_extract(self, url):
webpage = self._download_webpage(
url, 'temp_id', note='download video page')
# There's no simple way to determine whether an URL is a playlist or not
# Sometimes there are playlist links in individual videos, so treat it
# as a single video first
tvid = self._search_regex(
r'data-(?:player|shareplattrigger)-tvid\s*=\s*[\'"](\d+)', webpage, 'tvid', default=None)
if tvid is None:
playlist_result = self._extract_playlist(webpage)
if playlist_result:
return playlist_result
raise ExtractorError('Can\'t find any video')
video_id = self._search_regex(
r'data-(?:player|shareplattrigger)-videoid\s*=\s*[\'"]([a-f\d]+)', webpage, 'video_id')
formats = []
for _ in range(5):
raw_data = self.get_raw_data(tvid, video_id)
if raw_data['code'] != 'A00000':
if raw_data['code'] == 'A00111':
self.raise_geo_restricted()
raise ExtractorError('Unable to load data. Error code: ' + raw_data['code'])
data = raw_data['data']
for stream in data['vidl']:
if 'm3utx' not in stream:
continueView on GitHub (pinned to 956b8c5855)
Solutions
- Confirm the URL plays in a browser from the same network/region.
- Update youtube-dl/yt-dlp for current iQiyi page structure.
- Use the canonical www.iqiyi.com/v_<id>.html or embed URL form for the video.
- If the page is a pure listing, pick an actual video page URL.
Defensive patterns
Strategy: try-catch
Validate before calling
import requests
html = requests.get(url, headers={'User-Agent': 'Mozilla/5.0', 'Referer': 'https://www.iqiyi.com/'}, timeout=10).text
import re
if not re.search(r'data-(?:player|shareplattrigger)-tvid\s*=\s*[\'"](\d+)', html):
skip('no tvid in page') Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if "Can't find any video" in str(e):
# page has no player markup: verify in browser, try canonical v_<id>.html form, then give up
report_unsupported(url) Prevention
- Normalize iQiyi URLs to www.iqiyi.com/v_<id>.html form before extraction.
- Verify region availability - some iQiyi variants serve shell pages abroad.
- Treat as page-structure symptom: update extractor before debugging URLs.
When it happens
Trigger: An iqiyi.com (or pps.tv) URL whose HTML lacks the tvid regex match - JS-rendered shell pages, bot-verification pages, removed videos, or URL patterns (e.g. pure search/list pages without tvid) the extractor does not handle.
Common situations: Region-served variants of iqiyi.com that omit the player markup, link shorteners/expired links, or CDN responses requiring cookies; also stale extractor versions after iQiyi markup changes.
Related errors
- Redirect loop: %s
- Simplestream ID not found
- Unsupported URL: %s
- No sources found for video %s. Maybe a plain image?
- Unknown function %s
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/02cbd715716b837c.
Report an issue: GitHub.