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

  1. Open the URL in a browser - Sohu shows its own 'video unavailable' page for status-12 assets.
  2. Search Sohu for the episode under its current listing; re-licensed titles often get new ids.
  3. 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.
  4. 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

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.