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

  1. Drop the -l/--playlist flag and call you-get on each individual video URL instead.
  2. Check the extractor module for `download_playlist = playlist_not_supported(...)` before requesting playlist mode in scripts.
  3. 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

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


AI-assisted analysis of soimort/you-get@049548f3f3 (2026-08-15). Data as JSON: /api/errors/3ae73c9a25a12d70. Report an issue: GitHub.