yt-dlp/yt-dlp · error · ExtractorError

expecting Google SSAI stream

Error message

expecting Google SSAI stream

What it means

Raised when the GoPlay stream is not the expected Google SSAI stream. The stream setup changed; update yt-dlp.

Source

Thrown at yt_dlp/extractor/goplay.py:118

                    'series': self._search_regex(
                        fr'^(.+)? - S{season_number} - ', info_dict.get('title'), 'series', default=None),
                })
                break

        api = self._download_json(
            f'https://api.play.tv/web/v1/videos/long-form/{video_id}',
            video_id, headers={
                'Authorization': f'Bearer {self._id_token}',
                **self.geo_verification_headers(),
            })

        if 'manifestUrls' in api:
            formats, subtitles = self._extract_m3u8_formats_and_subtitles(
                api['manifestUrls']['hls'], video_id, ext='mp4', m3u8_id='HLS')

        else:
            if 'ssai' not in api:
                raise ExtractorError('expecting Google SSAI stream')

            ssai_content_source_id = api['ssai']['contentSourceID']
            ssai_video_id = api['ssai']['videoID']

            dai = self._download_json(
                f'https://dai.google.com/ondemand/dash/content/{ssai_content_source_id}/vid/{ssai_video_id}/streams',
                video_id, data=b'{"api-key":"null"}',
                headers={'content-type': 'application/json'})

            periods = self._extract_mpd_periods(dai['stream_manifest'], video_id)

            # skip pre-roll and mid-roll ads
            periods = [p for p in periods if '-ad-' not in p['id']]

            formats, subtitles = self._merge_mpd_periods(periods)

        info_dict.update({
            'id': video_id,

View on GitHub (pinned to 81ecd58b13)

Solutions

  1. Update yt-dlp; GoPlay may have changed its streaming setup (non-Google-SSAI stream).
  2. Check whether the content is DRM-protected; DRM streams are not supported.
  3. Report the issue with verbose output if it persists.

Example fix

yt-dlp -vU "URL"

When it happens

Trigger: Thrown at yt_dlp/extractor/goplay.py:118 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of yt-dlp/yt-dlp@81ecd58b13 (2026-08-22). Data as JSON: /api/errors/5b68ce228897b7d5. Report an issue: GitHub.