ytdl-org/youtube-dl · warning · ExtractorError

Uploading for replay. Please wait...

Error message

Uploading for replay. Please wait...

What it means

VLive live-stream status error: when the video's status field is 'ENDED', the VOD replay has not been uploaded yet, so the extractor raises 'Uploading for replay. Please wait...' with expected=True. There is nothing to download until the platform finishes processing the replay.

Source

Thrown at youtube_dl/extractor/vlive.py:168

                self._extract_video_info(video_id, vod_id, inkey))
        elif video_type == 'LIVE':
            status = video.get('status')
            if status == 'ON_AIR':
                stream_url = self._call_api(
                    'old/v3/live/%s/playInfo',
                    video_id)['result']['adaptiveStreamUrl']
                formats = self._extract_m3u8_formats(stream_url, video_id, 'mp4')
                self._sort_formats(formats)
                info = get_common_fields()
                info.update({
                    'title': self._live_title(video['title']),
                    'id': video_id,
                    'formats': formats,
                    'is_live': True,
                })
                return info
            elif status == 'ENDED':
                raise ExtractorError(
                    'Uploading for replay. Please wait...', expected=True)
            elif status == 'RESERVED':
                raise ExtractorError('Coming soon!', expected=True)
            elif video.get('exposeStatus') == 'CANCEL':
                raise ExtractorError(
                    'We are sorry, but the live broadcast has been canceled.',
                    expected=True)
            else:
                raise ExtractorError('Unknown status ' + status)


class VLivePostIE(VLiveIE):
    IE_NAME = 'vlive:post'
    _VALID_URL = r'https?://(?:(?:www|m)\.)?vlive\.tv/post/(?P<id>\d-\d+)'
    _TESTS = [{
        # uploadType = SOS
        'url': 'https://www.vlive.tv/post/1-20088044',
        'info_dict': {

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Wait for the replay upload to finish (typically minutes to hours) and retry the same URL
  2. Schedule a delayed retry instead of hammering the endpoint
  3. If the replay never appears, the broadcaster may have disabled replays
Defensive patterns

Strategy: retry

Try / catch

from youtube_dl.utils import ExtractorError
import time
for attempt in range(6):
    try:
        ydl.extract_info(url); break
    except ExtractorError as e:
        if 'Uploading for replay' not in str(e):
            raise
        time.sleep(600)  # exponential backoff in production

Prevention

When it happens

Trigger: Extracting a VLive video URL whose API-returned status == 'ENDED' (broadcast finished but replay not yet published).

Common situations: Polling a finished livestream URL minutes after it ended; scheduled jobs that grab the URL as soon as the stream drops.

Related errors


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