ytdl-org/youtube-dl · error · ExtractorError
The video is not found.
Error message
The video is not found.
What it means
Raised by NiconicoIE when the video info XML error code is 'NOT_FOUND' — the sm/nm/so ID does not correspond to any video (deleted-and-purged IDs also surface this way rather than DELETED). Marked expected=True.
Source
Thrown at youtube_dl/extractor/niconico.py:417
'http://ext.nicovideo.jp/api/getthumbinfo/' + video_id,
video_id, note='Downloading video info page')
def get_video_info_xml(items):
if not isinstance(items, list):
items = [items]
for item in items:
ret = xpath_text(video_info_xml, './/' + item)
if ret:
return ret
if get_video_info_xml('error'):
error_code = get_video_info_xml('code')
if error_code == 'DELETED':
raise ExtractorError('The video has been deleted.',
expected=True)
elif error_code == 'NOT_FOUND':
raise ExtractorError('The video is not found.',
expected=True)
elif error_code == 'COMMUNITY':
self.to_screen('%s: The video is community members only.' % video_id)
else:
raise ExtractorError('%s reports error: %s' % (self.IE_NAME, error_code))
# Start extracting video formats
formats = []
# Get HTML5 videos info
quality_info = try_get(api_data, lambda x: x['media']['delivery']['movie'])
if not quality_info:
raise ExtractorError('The video can\'t be downloaded', expected=True)
for audio_quality in quality_info.get('audios') or {}:
for video_quality in quality_info.get('videos') or {}:
if not audio_quality.get('isAvailable') or not video_quality.get('isAvailable'):
continueView on GitHub (pinned to 956b8c5855)
Solutions
- Double-check the video ID/URL for typos.
- Treat the ID as gone — Niconico reports no such video exists.
- Handle as a permanent failure in automation (do not retry).
Defensive patterns
Strategy: validation
Validate before calling
import requests
xml = requests.get(f'https://ext.nicovideo.jp/api/getthumbinfo/{video_id}').text
if '<code>NOT_FOUND</code>' in xml:
print('no such video — check the ID for typos') Try / catch
except ExtractorError as e:
if e.expected and 'not found' in str(e).lower():
drop_url(url) # ID invalid or purged
else:
raise Prevention
- Validate niconico IDs (sm/so + digits) format-wise before requesting.
- Use getthumbinfo as a cheap existence pre-check in crawlers.
- Treat NOT_FOUND as permanent — do not retry.
When it happens
Trigger: Extracting a nicovideo.jp/watch/<id> URL whose getthumbinfo response has error/code = 'NOT_FOUND'.
Common situations: Typos in IDs; links to long-purged videos; IDs that only exist as mylist ghosts. Nothing to fix client-side.
Related errors
- The video has been deleted.
- The video can't be downloaded
- %s said: %s
- Course %s does not exist
- That clip does not exist.
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/d07f3eadfd3622d4.
Report an issue: GitHub.