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
- Wait for the replay upload to finish (typically minutes to hours) and retry the same URL
- Schedule a delayed retry instead of hammering the endpoint
- 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
- Schedule replay retries with increasing intervals (10min+), not immediate loops
- Check the broadcast status endpoint before attempting full extraction
- Treat ENDED as 'come back later', not a hard failure
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
- Coming soon!
- We are sorry, but the live broadcast has been canceled.
- Show not found in A&E feed (too new?)
- Video %s is unavailable
- %s is offline
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/03f6d1c6cf962413.
Report an issue: GitHub.