ytdl-org/youtube-dl · error · ExtractorError
This video is only available for users of participating TV p
Error message
This video is only available for users of participating TV providers. Use --ap-mso to specify Adobe Pass Multiple-system operator Identifier and --ap-username and --ap-password or --netrc to provide account credentials.
What it means
Raised by the Adobe Pass MVPD helper when the target video is locked behind TV-provider (cable/satellite) authentication. The extractor reached the provider-selection stage and no valid MVPD session exists, so raise_mvpd_required() fires instead of proceeding. It is marked expected=True, so youtube-dl reports it as an expected extraction error rather than a bug.
Source
Thrown at youtube_dl/extractor/adobepass.py:1376
def is_expired(token, date_ele):
token_expires = unified_timestamp(re.sub(r'[_ ]GMT', '', xml_text(token, date_ele)))
return token_expires and token_expires <= int(time.time())
def post_form(form_page_res, note, data={}):
form_page, urlh = form_page_res
post_url = self._html_search_regex(r'<form[^>]+action=(["\'])(?P<url>.+?)\1', form_page, 'post url', group='url')
if not re.match(r'https?://', post_url):
post_url = compat_urlparse.urljoin(urlh.geturl(), post_url)
form_data = self._hidden_inputs(form_page)
form_data.update(data)
return self._download_webpage_handle(
post_url, video_id, note, data=urlencode_postdata(form_data), headers={
'Content-Type': 'application/x-www-form-urlencoded',
})
def raise_mvpd_required():
raise ExtractorError(
'This video is only available for users of participating TV providers. '
'Use --ap-mso to specify Adobe Pass Multiple-system operator Identifier '
'and --ap-username and --ap-password or --netrc to provide account credentials.', expected=True)
def extract_redirect_url(html, url=None, fatal=False):
# TODO: eliminate code duplication with generic extractor and move
# redirection code into _download_webpage_handle
REDIRECT_REGEX = r'[0-9]{,2};\s*(?:URL|url)=\'?([^\'"]+)'
redirect_url = self._search_regex(
r'(?i)<meta\s+(?=(?:[a-z-]+="[^"]+"\s+)*http-equiv="refresh")'
r'(?:[a-z-]+="[^"]+"\s+)*?content="%s' % REDIRECT_REGEX,
html, 'meta refresh redirect',
default=NO_DEFAULT if fatal else None, fatal=fatal)
if not redirect_url:
return None
if url:
redirect_url = compat_urlparse.urljoin(url, unescapeHTML(redirect_url))
return redirect_urlView on GitHub (pinned to 956b8c5855)
Solutions
- Add --ap-mso <MSO_ID> with a provider from `youtube-dl --ap-list-mso` plus --ap-username and --ap-password
- Alternatively store credentials in ~/.netrc (machine <mso or site> login <user> password <pass>) and pass --netrc
- Verify the MSO identifier is exactly the one listed by --ap-list-mso for your TV provider
- If credentials were already supplied, clear the stale Adobe Pass cache (~/.cache/youtube-dl/adobepass) and retry
Example fix
# before youtube-dl 'https://www.history.com/video/locked-episode' # after youtube-dl --ap-mso 'Comcast_SSO' --ap-username user@example.com --ap-password 'secret' 'https://www.history.com/video/locked-episode'
Defensive patterns
Strategy: validation
Validate before calling
# Before extraction, check credentials/MSO availability
import subprocess
msos = subprocess.run(['youtube-dl', '--ap-list-mso'], capture_output=True, text=True).stdout
has_creds = bool(args.ap_username and args.ap_password and args.ap_mso)
if not has_creds:
print('Skipping %s: TV-provider (MVPD) credentials required' % url) Try / catch
try:
ydl.extract_info(url, download=True)
except YoutubeDLError as e:
if 'only available for users of participating TV providers' in str(e):
queue_for_mvpd_retry(url) # collect and process later with --ap-* credentials
else:
raise Prevention
- Pre-configure --ap-mso/--ap-username/--ap-password or a netrc entry before batch jobs touching MVPD-walled sites
- Cache MVPD session state so repeated runs reuse the Adobe Pass token instead of re-triggering the wall
- Maintain a per-domain capability list marking which sites need provider auth, and skip them when credentials are absent
When it happens
Trigger: Extracting a site whose theplatform/AETN metadata has an MVPD wall while no --ap-mso was given; calling an extractor that internally invokes _extract_mvpd_info() without credentials; Adobe Pass session cache empty or expired.
Common situations: Running youtube-dl on locked episodes of participating networks (A&E, History, etc.) without provider credentials; misconfigured .netrc missing the 'adobepass' or site entry; switching MSOs without clearing the MVPD cache.
Related errors
- We're sorry, but either the User ID or Password entered is n
- details (dynamic from authorize XML response, xml_text(autho
- Unable to login: %s said: %s
- Unable to login: %s
- Unable to login: %s
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/96a93f385b513c41.
Report an issue: GitHub.