[ap] improve adobe pass names and parse error handling

This commit is contained in:
Remita Amine 2016-09-14 18:58:47 +01:00
parent 0002962f3f
commit 797c636bcb
4 changed files with 15 additions and 16 deletions

View file

@ -131,7 +131,7 @@ class YoutubeDL(object):
username: Username for authentication purposes. username: Username for authentication purposes.
password: Password for authentication purposes. password: Password for authentication purposes.
videopassword: Password for accessing a video. videopassword: Password for accessing a video.
ap_mso_id: Adobe Pass Multiple-system operator Identifier. ap_mso: Adobe Pass Multiple-system operator Identifier.
ap_username: TV Provider username for authentication purposes. ap_username: TV Provider username for authentication purposes.
ap_password: TV Provider password for authentication purposes. ap_password: TV Provider password for authentication purposes.
usenetrc: Use netrc for authentication instead. usenetrc: Use netrc for authentication instead.

View file

@ -120,9 +120,9 @@ def _real_main(argv=None):
desc += ' (Example: "%s%s:%s" )' % (ie.SEARCH_KEY, random.choice(_COUNTS), random.choice(_SEARCHES)) desc += ' (Example: "%s%s:%s" )' % (ie.SEARCH_KEY, random.choice(_COUNTS), random.choice(_SEARCHES))
write_string(desc + '\n', out=sys.stdout) write_string(desc + '\n', out=sys.stdout)
sys.exit(0) sys.exit(0)
if opts.list_ap_mso_ids: if opts.ap_mso_list:
table = [[mso_id, mso_info['name']] for mso_id, mso_info in MSO_INFO.items()] table = [[mso_id, mso_info['name']] for mso_id, mso_info in MSO_INFO.items()]
write_string('Supported TV Providers:\n' + render_table(['mso id', 'mso name'], table) + '\n', out=sys.stdout) write_string('Supported TV Providers:\n' + render_table(['mso', 'mso name'], table) + '\n', out=sys.stdout)
sys.exit(0) sys.exit(0)
# Conflicting, missing and erroneous options # Conflicting, missing and erroneous options
@ -165,6 +165,8 @@ def _real_main(argv=None):
parser.error('max sleep interval must be greater than or equal to min sleep interval') parser.error('max sleep interval must be greater than or equal to min sleep interval')
else: else:
opts.max_sleep_interval = opts.sleep_interval opts.max_sleep_interval = opts.sleep_interval
if opts.ap_mso and opts.ap_mso not in MSO_INFO:
parser.error('Unsupported TV Provider, use --ap-mso-list to get a list of supported TV Providers')
def parse_retries(retries): def parse_retries(retries):
if retries in ('inf', 'infinite'): if retries in ('inf', 'infinite'):
@ -303,7 +305,7 @@ def parse_retries(retries):
'password': opts.password, 'password': opts.password,
'twofactor': opts.twofactor, 'twofactor': opts.twofactor,
'videopassword': opts.videopassword, 'videopassword': opts.videopassword,
'ap_mso_id': opts.ap_mso_id, 'ap_mso': opts.ap_mso,
'ap_username': opts.ap_username, 'ap_username': opts.ap_username,
'ap_password': opts.ap_password, 'ap_password': opts.ap_password,
'quiet': (opts.quiet or any_getting or any_printing), 'quiet': (opts.quiet or any_getting or any_printing),

View file

@ -72,8 +72,8 @@ def post_form(form_page_res, note, data={}):
def raise_mvpd_required(): def raise_mvpd_required():
raise ExtractorError( raise ExtractorError(
'This video is only available for users of participating TV providers. ' 'This video is only available for users of participating TV providers. '
'Use --ap-mso-id to specify Adobe Pass Multiple-system operator Identifier ' 'Use --ap-mso to specify Adobe Pass Multiple-system operator Identifier '
'and --netrc to provide account credentials.', expected=True) 'and --ap-username and --ap-password or --netrc to provide account credentials.', expected=True)
mvpd_headers = { mvpd_headers = {
'ap_42': 'anonymous', 'ap_42': 'anonymous',
@ -91,12 +91,9 @@ def raise_mvpd_required():
authn_token = None authn_token = None
if not authn_token: if not authn_token:
# TODO add support for other TV Providers # TODO add support for other TV Providers
mso_id = self._downloader.params.get('ap_mso_id') mso_id = self._downloader.params.get('ap_mso')
if not mso_id: if not mso_id:
raise_mvpd_required() raise_mvpd_required()
if mso_id not in MSO_INFO:
raise ExtractorError(
'Unsupported TV Provider, use --list-ap-mso-ids to get a list of supported TV Providers' % mso_id, expected=True)
username, password = self._get_login_info('ap_username', 'ap_password', mso_id) username, password = self._get_login_info('ap_username', 'ap_password', mso_id)
if not username or not password: if not username or not password:
raise_mvpd_required() raise_mvpd_required()

View file

@ -353,20 +353,20 @@ def _scrub_eq(o):
adobe_pass = optparse.OptionGroup(parser, 'Adobe Pass Options') adobe_pass = optparse.OptionGroup(parser, 'Adobe Pass Options')
adobe_pass.add_option( adobe_pass.add_option(
'--ap-mso-id', '--ap-mso',
dest='ap_mso_id', metavar='APMSOID', dest='ap_mso', metavar='MSO',
help='Adobe Pass Multiple-system operator Identifier') help='Adobe Pass Multiple-system operator Identifier')
adobe_pass.add_option( adobe_pass.add_option(
'--ap-username', '--ap-username',
dest='ap_username', metavar='APUSERNAME', dest='ap_username', metavar='USERNAME',
help='TV Provider Login with this account ID') help='TV Provider Login with this account ID')
adobe_pass.add_option( adobe_pass.add_option(
'--ap-password', '--ap-password',
dest='ap_password', metavar='APPASSWORD', dest='ap_password', metavar='PASSWORD',
help='TV Provider Account password. If this option is left out, youtube-dl will ask interactively.') help='TV Provider Account password. If this option is left out, youtube-dl will ask interactively.')
adobe_pass.add_option( adobe_pass.add_option(
'--list-ap-mso-ids', '--ap-mso-list',
action='store_true', dest='list_ap_mso_ids', default=False, action='store_true', dest='ap_mso_list', default=False,
help='List all supported TV Providers') help='List all supported TV Providers')
video_format = optparse.OptionGroup(parser, 'Video Format Options') video_format = optparse.OptionGroup(parser, 'Video Format Options')