ytdl-org/youtube-dl · error · ExtractorError

This feature does not work from bundled exe. Run youtube-dl

Error message

This feature does not work from bundled exe. Run youtube-dl from sources.

What it means

Raised by the ivi.ru extractor when the signed-request path (site 353, which needs Cryptodome CMAC/Blowfish to sign requests) returned an API error, but the process is a frozen/bundled executable (sys.frozen). Bundled builds cannot import the required crypto code path, so the extractor tells the user to run from sources.

Source

Thrown at youtube_dl/extractor/ivi.py:144

                query = {}

            video_json = self._download_json(
                self._LIGHT_URL, video_id,
                'Downloading video JSON', data=content_data, query=query)

            error = video_json.get('error')
            if error:
                origin = error.get('origin')
                message = error.get('message') or error.get('user_message')
                extractor_msg = 'Unable to download video %s'
                if origin == 'NotAllowedForLocation':
                    self.raise_geo_restricted(message, self._GEO_COUNTRIES)
                elif origin == 'NoRedisValidData':
                    extractor_msg = 'Video %s does not exist'
                elif site == 353:
                    continue
                elif bundled:
                    raise ExtractorError(
                        'This feature does not work from bundled exe. Run youtube-dl from sources.',
                        expected=True)
                elif not pycryptodomex_found:
                    raise ExtractorError(
                        'pycryptodomex not found. Please install it.',
                        expected=True)
                elif message:
                    extractor_msg += ': ' + message
                raise ExtractorError(extractor_msg % video_id, expected=True)
            else:
                break

        result = video_json['result']
        title = result['title']

        quality = qualities(self._KNOWN_FORMATS)

        formats = []

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Run youtube-dl from a source checkout or via pip instead of the bundled exe.
  2. Install pycryptodomex into the environment used by the non-bundled run.
  3. Switch to yt-dlp, whose ivi support and packaging do not have this limitation.

Example fix

// before
# frozen youtube-dl.exe
youtube-dl.exe 'http://www.ivi.ru/watch/12345'
# => This feature does not work from bundled exe.

// after
pip install youtube-dl pycryptodomex
youtube-dl 'http://www.ivi.ru/watch/12345'
Defensive patterns

Strategy: fallback

Validate before calling

import sys
if hasattr(sys, 'frozen'):
    # frozen build: route ivi URLs to a source install / different tool
    use_alternate_tool_for('ivi')

Try / catch

try:
    ydl.extract_info(ivi_url)
except ExtractorError as e:
    if 'bundled exe' in str(e):
        rerun_via_source_install(ivi_url)

Prevention

When it happens

Trigger: Running a PyInstaller-style frozen youtube-dl build; the ivi API responds with an error object while iterating site 353, the 'bundled' flag is true, and control falls into the bundled branch of the error handler.

Common situations: Users of third-party frozen youtube-dl executables; the standalone exe ships without a working Cryptodome import, so any ivi request needing signed retries fails with this message.

Related errors


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/afc380cb7c98a612. Report an issue: GitHub.