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
- Run youtube-dl from a source checkout or via pip instead of the bundled exe.
- Install pycryptodomex into the environment used by the non-bundled run.
- 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
- Detect sys.frozen at startup and disable ivi support for frozen builds.
- Ship ivi downloads through a pip-installed youtube-dl with pycryptodomex available.
- Prefer yt-dlp for ivi when packaging constraints exist.
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
- pycryptodomex not found. Please install it.
- Unable to download video %s
- Invalid path
- Unauthorized user "%s"
- Missing "id" field in extractor result
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/afc380cb7c98a612.
Report an issue: GitHub.