soimort/you-get · error · NotImplementedError
Playlist is not supported for
Error message
Playlist is not supported for
What it means
Raised by the playlist_not_supported() factory in src/you_get/common.py:1207 as NotImplementedError. you-get assigns this function as a site module's download_playlist hook when the extractor only implements single-video download. It fires when the user requests a playlist/album download (e.g. the -l/--playlist flag) for a site whose extractor never implemented playlist support.
Source
Thrown at src/you_get/common.py:1207
assert has_ffmpeg_installed(), 'FFmpeg not installed.'
global output_filename
if output_filename:
dotPos = output_filename.rfind('.')
if dotPos > 0:
title = output_filename[:dotPos]
ext = output_filename[dotPos+1:]
else:
title = output_filename
title = tr(get_filename(title))
ffmpeg_download_stream(url, title, ext, params, output_dir, stream=stream)
def playlist_not_supported(name):
def f(*args, **kwargs):
raise NotImplementedError('Playlist is not supported for ' + name)
return f
def print_info(site_info, title, type, size, **kwargs):
if json_output:
json_output_.print_info(
site_info=site_info, title=title, type=type, size=size
)
return
if type:
type = type.lower()
if type in ['3gp']:
type = 'video/3gpp'
elif type in ['asf', 'wmv']:
type = 'video/x-ms-asf'
elif type in ['flv', 'f4v']:
type = 'video/x-flv'
elif type in ['mkv']:View on GitHub (pinned to 049548f3f3)
Solutions
- Drop the -l/--playlist flag and call you-get on each individual video URL instead.
- Check the extractor module for `download_playlist = playlist_not_supported(...)` before requesting playlist mode in scripts.
- If you control the codebase, implement a real download_playlist function for that site and register it.
Example fix
# before you-get -l 'http://www.douyu.com/some-room' # NotImplementedError: Playlist is not supported for douyu # after you-get 'http://www.douyu.com/some-room'
Defensive patterns
Strategy: validation
Validate before calling
from you_get.extractors import douyutv # any site module
import you_get.common
def supports_playlist(module):
fn = getattr(module, 'download_playlist', None)
return fn is not None and fn is not you_get.common.playlist_not_supported.__wrapped__ if False else (
'Playlist is not supported' not in getattr(
fn, '__doc__', '') and not _is_not_supported_stub(fn)
)
def _is_not_supported_stub(fn):
# stubs are closures raising NotImplementedError on any call
try:
fn(None)
except NotImplementedError:
return True
except Exception:
return False
return False Try / catch
try:
module.download_playlist(url)
except NotImplementedError as e:
# fall back to single-item download for each URL you discover yourself
module.download(single_video_url) Prevention
- Check the extractor module for `download_playlist = playlist_not_supported(...)` before using -l.
- Feed per-video URLs instead of relying on playlist mode for single-video extractors.
When it happens
Trigger: Invoking `you-get --playlist <url>` (or calling <extractor_module>.download_playlist(url, ...)) for a site whose module sets `download_playlist = playlist_not_supported('<name>')`, e.g. douyu (douyutv.py), interest (interest.py). The wrapper accepts any *args/**kwargs and immediately raises.
Common situations: User passes a channel/playlist URL with -l to a single-video extractor; scripts that generically call download_playlist on every matched extractor; misreading a site page that contains many videos but only has per-item extractor support.
Related errors
- Flickr extractor is not supported for %s.
- You can download it with -l flag
- Unknown url pattern
- No video found in this playlist
- %s not supported
AI-assisted analysis of soimort/you-get@049548f3f3 (2026-08-15).
Data as JSON: /api/errors/3ae73c9a25a12d70.
Report an issue: GitHub.