ytdl-org/youtube-dl · error · ExtractorError

This post doesn't contain a video

Error message

This post doesn't contain a video

What it means

Raised by the AppleConnect extractor when the page HTML does not contain a class="auc-video-data" JSON block. The _html_search_regex failure is caught and re-raised as this user-facing message. Marked expected=True: the itunes post simply has no embedded video.

Source

Thrown at youtube_dl/extractor/appleconnect.py:38

            'uploader': 'Drake',
            'thumbnail': r're:^https?://.*\.jpg$',
            'upload_date': '20150710',
            'timestamp': 1436545535,
        },
    }, {
        'url': 'https://itunes.apple.com/us/post/sa.0fe0229f-2457-11e5-9f40-1bb645f2d5d9',
        'only_matching': True,
    }]

    def _real_extract(self, url):
        video_id = self._match_id(url)
        webpage = self._download_webpage(url, video_id)

        try:
            video_json = self._html_search_regex(
                r'class="auc-video-data">(\{.*?\})', webpage, 'json')
        except ExtractorError:
            raise ExtractorError('This post doesn\'t contain a video', expected=True)

        video_data = self._parse_json(video_json, video_id)
        timestamp = str_to_int(self._html_search_regex(r'data-timestamp="(\d+)"', webpage, 'timestamp'))
        like_count = str_to_int(self._html_search_regex(r'(\d+) Loves', webpage, 'like count', default=None))

        return {
            'id': video_id,
            'url': video_data['sslSrc'],
            'title': video_data['title'],
            'description': video_data['description'],
            'uploader': video_data['artistName'],
            'thumbnail': video_data['artworkUrl'],
            'timestamp': timestamp,
            'like_count': like_count,
        }

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Confirm the post actually contains a video by opening it in a browser
  2. If the page changed, inspect current HTML for the new embed block and check upstream yt-dlp for the updated regex
Defensive patterns

Strategy: validation

Validate before calling

# Check the page for the video-data block before extracting
import requests
html = requests.get(url).text
if 'auc-video-data' not in html:
    skip(url, reason='post has no embedded video')

Try / catch

try:
    ydl.extract_info(url)
except ExtractorError as e:
    if "doesn't contain a video" in str(e):
        skip(url)  # not a video post; nothing to download

Prevention

When it happens

Trigger: Extracting an itunes.apple.com/post/... URL whose page lacks the auc-video-data element; photo-only or text-only posts; redesigned pages that renamed the CSS class.

Common situations: URLs for non-video posts (articles, image galleries); old post URLs redirected to pages without the video block; class rename breaking detection site-wide.

Related errors


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