yt-dlp/yt-dlp · error · ExtractorError
Login failed (invalid username/password)
Error message
Login failed (invalid username/password)
What it means
Error "Login failed (invalid username/password)" thrown in yt-dlp/yt-dlp.
Source
Thrown at yt_dlp/extractor/tubitv.py:97
}]
# DRM formats are included only to raise appropriate error
_UNPLAYABLE_FORMATS = ('hlsv6_widevine', 'hlsv6_widevine_nonclearlead', 'hlsv6_playready_psshv0',
'hlsv6_fairplay', 'dash_widevine', 'dash_widevine_nonclearlead')
def _perform_login(self, username, password):
self.report_login()
form_data = {
'username': username,
'password': password,
}
payload = urlencode_postdata(form_data)
request = Request(self._LOGIN_URL, payload)
request.headers['Content-Type'] = 'application/x-www-form-urlencoded'
login_page = self._download_webpage(
request, None, False, 'Wrong login info')
if not re.search(r'id="tubi-logout"', login_page):
raise ExtractorError(
'Login failed (invalid username/password)', expected=True)
def _real_extract(self, url):
video_id, video_type = self._match_valid_url(url).group('id', 'type')
webpage = self._download_webpage(f'https://tubitv.com/{video_type}/{video_id}/', video_id)
video_data = self._search_json(
r'window\.__data\s*=', webpage, 'data', video_id,
transform_source=js_to_json)['video']['byId'][video_id]
formats = []
drm_formats = False
for resource in traverse_obj(video_data, ('video_resources', lambda _, v: url_or_none(v['manifest']['url']))):
resource_type = resource.get('type')
manifest_url = resource['manifest']['url']
if resource_type == 'dash':
formats.extend(self._extract_mpd_formats(manifest_url, video_id, mpd_id=resource_type, fatal=False))
elif resource_type in ('hlsv3', 'hlsv6'):View on GitHub (pinned to 81ecd58b13)
Solutions
- Check username and password
When it happens
Trigger: Thrown at yt_dlp/extractor/tubitv.py:97 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of yt-dlp/yt-dlp@81ecd58b13 (2026-08-22).
Data as JSON: /api/errors/5d82e7dd230cc45c.
Report an issue: GitHub.