ytdl-org/youtube-dl · error · ExtractorError
%s said: There's something wrong in the video.
Error message
%s said: There's something wrong in the video.
What it means
SohuIE checks the _fetch_data result: when vid_data['play'] != 1 and vid_data['status'] == 12, it raises '<Sohu> said: There's something wrong in the video.' as an expected error. Status 12 is Sohu's server-side flag for a broken/unavailable video (removed or erroring asset), distinct from the geo-restriction branch right below it.
Source
Thrown at youtube_dl/extractor/sohu.py:114
base_data_url + vid_id, video_id,
'Downloading JSON data for %s' % vid_id,
headers=self.geo_verification_headers())
mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id')
mytv = mobj.group('mytv') is not None
webpage = self._download_webpage(url, video_id)
title = re.sub(r' - 搜狐视频$', '', self._og_search_title(webpage))
vid = self._html_search_regex(
r'var vid ?= ?["\'](\d+)["\']',
webpage, 'video path')
vid_data = _fetch_data(vid, mytv)
if vid_data['play'] != 1:
if vid_data.get('status') == 12:
raise ExtractorError(
'%s said: There\'s something wrong in the video.' % self.IE_NAME,
expected=True)
else:
self.raise_geo_restricted(
'%s said: The video is only licensed to users in Mainland China.' % self.IE_NAME)
formats_json = {}
for format_id in ('nor', 'high', 'super', 'ori', 'h2644k', 'h2654k'):
vid_id = vid_data['data'].get('%sVid' % format_id)
if not vid_id:
continue
vid_id = compat_str(vid_id)
formats_json[format_id] = vid_data if vid == vid_id else _fetch_data(vid_id, mytv)
part_count = vid_data['data']['totalBlocks']
playlist = []
for i in range(part_count):View on GitHub (pinned to 956b8c5855)
Solutions
- Open the URL in a browser - Sohu shows its own 'video unavailable' page for status-12 assets.
- Search Sohu for the episode under its current listing; re-licensed titles often get new ids.
- If the video plays in a browser while outside mainland China, it is not status 12 - update yt-dlp, since branch logic may have changed.
- Find the content on another platform.
Defensive patterns
Strategy: try-catch
Try / catch
try:
extract(url)
except ExtractorError as e:
if 'something wrong in the video' in str(e):
mark_asset_deleted(video_id)
elif 'licensed to users in Mainland China' in str(e):
retry_via_cn_proxy()
else:
raise Prevention
- Distinguish status-12 (deleted) from geo errors - only the latter benefit from a CN VPN.
- Verify Sohu links play in a browser before batch runs.
- Expect licensing-window expiry on dramas; prefer fresh URLs.
When it happens
Trigger: Extracting a tv.sohu.com/mytv.sohu.com URL whose video info API returns play != 1 with status == 12 - typically deleted videos or assets Sohu's backend has flagged as faulty. If status is not 12, the same play != 1 condition routes to raise_geo_restricted instead.
Common situations: Drama/variety-show episodes removed after licensing windows expired (common on Sohu); videos taken down during content reviews; users outside mainland China hitting this and misreading it as geo-blocking when their video is actually deleted.
Related errors
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/955c44a3420f8849.
Report an issue: GitHub.