ytdl-org/youtube-dl · warning · ExtractorError

Webpage type is " ": only video extraction is supported for…

Error message

Webpage type is "%s": only video extraction is supported for Slideshare

What it means

SlideshareIE._real_extract parses the slideshare_object JSON out of the page and checks info['slideshow']['type']. Only type 'video' is supported because the extractor builds a direct video URL from jsplayer.video_bucket/doc; any other type (e.g. 'presentation') is refused with this expected error. Slide decks without an embedded video recording have no media stream to extract.

Solutions

  1. Confirm on the page that a video player (not just the slide viewer) exists for the item.
  2. If you want the slides, download the presentation file (PDF/PPT) directly or use the Slideshare API - this extractor will never handle it.
  3. Find the speaker's recording of the same talk on YouTube/Vimeo instead.
  4. If the item definitely has a video but the error fires, the slideshare_object regex may be stale - update yt-dlp.
Defensive patterns

Strategy: validation

Validate before calling

info = json.loads(slideshare_obj)
if info['slideshow']['type'] != 'video':
    print('not a video slideshow - use another method for the deck')

Type guard

def is_video_slideshow(info: dict) -> bool:
    return info.get('slideshow', {}).get('type') == 'video'

Try / catch

try:
    extract(url)
except ExtractorError as e:
    if 'only video extraction' in str(e):
        download_slides_via_api(url)
    else:
        raise

Prevention

When it happens

Trigger: Extracting a Slideshare URL whose slideshow object has type != 'video' - i.e. a plain presentation, document, or infographic upload with no recorded video track.

Common situations: Users pasting links to ordinary slide decks expecting a download (only the PDF could be fetched, not via this extractor); presentations where the author disabled the video recording; changes to the slideshare_object JSON structure making 'type' resolve to an unexpected value.

Related errors


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

Appendix: source

Thrown at youtube_dl/extractor/slideshare.py:38

        'url': 'http://www.slideshare.net/Dataversity/keynote-presentation-managing-scale-and-complexity',
        'info_dict': {
            'id': '25665706',
            'ext': 'mp4',
            'title': 'Managing Scale and Complexity',
            'description': 'This was a keynote presentation at the NoSQL Now! 2013 Conference & Expo (http://www.nosqlnow.com). This presentation was given by Adrian Cockcroft from Netflix.',
        },
    }

    def _real_extract(self, url):
        mobj = re.match(self._VALID_URL, url)
        page_title = mobj.group('title')
        webpage = self._download_webpage(url, page_title)
        slideshare_obj = self._search_regex(
            r'\$\.extend\(.*?slideshare_object,\s*(\{.*?\})\);',
            webpage, 'slideshare object')
        info = json.loads(slideshare_obj)
        if info['slideshow']['type'] != 'video':
            raise ExtractorError('Webpage type is "%s": only video extraction is supported for Slideshare' % info['slideshow']['type'], expected=True)

        doc = info['doc']
        bucket = info['jsplayer']['video_bucket']
        ext = info['jsplayer']['video_extension']
        video_url = compat_urlparse.urljoin(bucket, doc + '-SD.' + ext)
        description = get_element_by_id('slideshow-description-paragraph', webpage) or self._html_search_regex(
            r'(?s)<p[^>]+itemprop="description"[^>]*>(.+?)</p>', webpage,
            'description', fatal=False)

        return {
            '_type': 'video',
            'id': info['slideshow']['id'],
            'title': info['slideshow']['title'],
            'ext': ext,
            'url': video_url,
            'thumbnail': info['slideshow']['pin_image_url'],
            'description': description.strip() if description else None,
        }

View on GitHub (pinned to 956b8c5855)