ytdl-org/youtube-dl · error · ExtractorError
Video %s has been deleted
Error message
Video %s has been deleted
What it means
Raised in AfreecaTV's _real_extract when the downloaded video page HTML matches the pattern alert(['\"]This video has been deleted. The site itself declares the video deleted, so extraction stops immediately. Marked expected=True.
Source
Thrown at youtube_dl/extractor/afreecatv.py:229
-7: 'You cannot use your Global AfreecaTV account to access Korean AfreecaTV.',
-10: 'Sorry for the inconvenience. \nYour account has been blocked due to an unauthorized access. \nPlease contact our Help Center for assistance.',
-32008: 'You have failed to log in. Please contact our Help Center.',
}
result = int_or_none(response.get('RESULT'))
if result != 1:
error = _ERRORS.get(result, 'You have failed to log in.')
raise ExtractorError(
'Unable to login: %s said: %s' % (self.IE_NAME, error),
expected=True)
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
if re.search(r'alert\(["\']This video has been deleted', webpage):
raise ExtractorError(
'Video %s has been deleted' % video_id, expected=True)
station_id = self._search_regex(
r'nStationNo\s*=\s*(\d+)', webpage, 'station')
bbs_id = self._search_regex(
r'nBbsNo\s*=\s*(\d+)', webpage, 'bbs')
video_id = self._search_regex(
r'nTitleNo\s*=\s*(\d+)', webpage, 'title', default=video_id)
partial_view = False
for _ in range(2):
query = {
'nTitleNo': video_id,
'nStationNo': station_id,
'nBbsNo': bbs_id,
}
if partial_view:
query['partialView'] = 'SKIP_ADULT'View on GitHub (pinned to 956b8c5855)
Solutions
- Accept it: the video is gone server-side and no client-side fix exists
- Check the broadcaster's channel page for a re-upload or a replacement video
- Remove the dead URL from batch/playlist files to stop repeated failures
Defensive patterns
Strategy: validation
Validate before calling
# Cheap pre-check: fetch the page and look for the deletion alert before full extraction
import requests
html = requests.get(url).text
if 'This video has been deleted' in html:
mark_url_dead(url) # skip extraction Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if 'has been deleted' in str(e):
remove_from_playlist(url) # permanent, do not retry Prevention
- Prune deleted-video URLs from batch lists as soon as this error appears — retries never succeed
- For archival, download replays promptly before AfreecaTV's retention expires
When it happens
Trigger: Downloading a VOD page whose inline JavaScript shows the deletion alert; broadcaster removed the replay; URL for an old broadcast whose retention period expired.
Common situations: Following links from stale playlists or bookmarks; replays past AfreecaTV's retention window; broadcaster-deleted content.
Related errors
- Video %s does not exist
- Show not found in A&E feed (too new?)
- Unable to login: %s said: %s
- %s said: %s
- Unable to download video info
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/1a104e5e51321a96.
Report an issue: GitHub.