[YouTube] Show premium state in availability (#209)

Authored by colethedj
This commit is contained in:
Matthew 2021-04-03 21:50:58 +13:00 committed by GitHub
parent 73cd218f5a
commit b28f8d244a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2296,8 +2296,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
is_private = bool_or_none(video_details.get('isPrivate')) is_private = bool_or_none(video_details.get('isPrivate'))
is_unlisted = bool_or_none(microformat.get('isUnlisted')) is_unlisted = bool_or_none(microformat.get('isUnlisted'))
is_membersonly = None is_membersonly = None
is_premium = None
if initial_data and is_private is not None: if initial_data and is_private is not None:
is_membersonly = False is_membersonly = False
is_premium = False
contents = try_get(initial_data, lambda x: x['contents']['twoColumnWatchNextResults']['results']['results']['contents'], list) contents = try_get(initial_data, lambda x: x['contents']['twoColumnWatchNextResults']['results']['results']['contents'], list)
for content in contents or []: for content in contents or []:
badges = try_get(content, lambda x: x['videoPrimaryInfoRenderer']['badges'], list) badges = try_get(content, lambda x: x['videoPrimaryInfoRenderer']['badges'], list)
@ -2306,13 +2308,16 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if label.lower() == 'members only': if label.lower() == 'members only':
is_membersonly = True is_membersonly = True
break break
if is_membersonly: elif label.lower() == 'premium':
is_premium = True
break
if is_membersonly or is_premium:
break break
# TODO: Add this for playlists # TODO: Add this for playlists
info['availability'] = self._availability( info['availability'] = self._availability(
is_private=is_private, is_private=is_private,
needs_premium=False, # Youtube no longer have premium-only videos? needs_premium=is_premium,
needs_subscription=is_membersonly, needs_subscription=is_membersonly,
needs_auth=info['age_limit'] >= 18, needs_auth=info['age_limit'] >= 18,
is_unlisted=None if is_private is None else is_unlisted) is_unlisted=None if is_private is None else is_unlisted)