{"record":{"id":"3ae73c9a25a12d70","repo":"soimort/you-get","slug":"playlist-is-not-supported-for","errorCode":null,"errorMessage":"Playlist is not supported for ","messagePattern":"Playlist is not supported for ","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"src/you_get/common.py","lineNumber":1207,"sourceCode":"    assert has_ffmpeg_installed(), 'FFmpeg not installed.'\n\n    global output_filename\n    if output_filename:\n        dotPos = output_filename.rfind('.')\n        if dotPos > 0:\n            title = output_filename[:dotPos]\n            ext = output_filename[dotPos+1:]\n        else:\n            title = output_filename\n\n    title = tr(get_filename(title))\n\n    ffmpeg_download_stream(url, title, ext, params, output_dir, stream=stream)\n\n\ndef playlist_not_supported(name):\n    def f(*args, **kwargs):\n        raise NotImplementedError('Playlist is not supported for ' + name)\n    return f\n\n\ndef print_info(site_info, title, type, size, **kwargs):\n    if json_output:\n        json_output_.print_info(\n            site_info=site_info, title=title, type=type, size=size\n        )\n        return\n    if type:\n        type = type.lower()\n    if type in ['3gp']:\n        type = 'video/3gpp'\n    elif type in ['asf', 'wmv']:\n        type = 'video/x-ms-asf'\n    elif type in ['flv', 'f4v']:\n        type = 'video/x-flv'\n    elif type in ['mkv']:","sourceCodeStart":1189,"sourceCodeEnd":1225,"githubUrl":"https://github.com/soimort/you-get/blob/049548f3f3f35e67ba8d3181c71fdc71d11cf260/src/you_get/common.py#L1189-L1225","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before\nyou-get -l 'http://www.douyu.com/some-room'\n# NotImplementedError: Playlist is not supported for douyu\n\n# after\nyou-get 'http://www.douyu.com/some-room'","handlingStrategy":"validation","validationCode":"from you_get.extractors import douyutv  # any site module\nimport you_get.common\n\ndef supports_playlist(module):\n    fn = getattr(module, 'download_playlist', None)\n    return fn is not None and fn is not you_get.common.playlist_not_supported.__wrapped__ if False else (\n        'Playlist is not supported' not in getattr(\n            fn, '__doc__', '') and not _is_not_supported_stub(fn)\n    )\n\ndef _is_not_supported_stub(fn):\n    # stubs are closures raising NotImplementedError on any call\n    try:\n        fn(None)\n    except NotImplementedError:\n        return True\n    except Exception:\n        return False\n    return False","typeGuard":null,"tryCatchPattern":"try:\n    module.download_playlist(url)\nexcept NotImplementedError as e:\n    # fall back to single-item download for each URL you discover yourself\n    module.download(single_video_url)","preventionTips":["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."],"tags":["you-get","not-implemented","playlist","extractor"],"backgroundTag":null,"analyzedSha":"049548f3f3f35e67ba8d3181c71fdc71d11cf260","analyzedAt":"2026-08-15T03:58:15.069Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}