[vlive] add: improved video extractor errors

This commit is contained in:
exwm 2020-11-03 21:27:49 -05:00
parent c434e9f504
commit 9c8bc84fd2

View File

@ -122,15 +122,24 @@ def _real_extract(self, url):
video_params = try_get(params, lambda x: x["postDetail"]["post"]["officialVideo"], dict) video_params = try_get(params, lambda x: x["postDetail"]["post"]["officialVideo"], dict)
if video_params is None: if video_params is None:
error_data = try_get(params, lambda x: x["postDetail"]["error"]["data"], dict) error = try_get(params, lambda x: x["postDetail"]["error"], dict)
error_data = try_get(error, lambda x: x["data"], dict)
error_video = try_get(error_data, lambda x: x["officialVideo"], dict)
error_msg = try_get(error, lambda x: x["message"], compat_str)
product_type = try_get(error_data, product_type = try_get(error_data,
[lambda x: x["officialVideo"]["productType"], [lambda x: x["officialVideo"]["productType"],
lambda x: x["board"]["boardType"]], lambda x: x["board"]["boardType"]],
compat_str) compat_str)
if product_type in ('VLIVE_PLUS', 'VLIVE+'):
self.raise_login_required('This video is only available for VLIVE+ subscribers') if error_video is not None:
if product_type in ('VLIVE_PLUS', 'VLIVE+'):
self.raise_login_required('This video is only available with V LIVE+.')
elif error_msg is not None:
raise ExtractorError('V LIVE reported the following error: %s' % error_msg)
else:
raise ExtractorError('Failed to extract video parameters.')
elif 'post' in url: elif 'post' in url:
raise ExtractorError('Url does not appear to be a video post.') raise ExtractorError('Url does not appear to be a video post.', expected=True)
else: else:
raise ExtractorError('Failed to extract video parameters.') raise ExtractorError('Failed to extract video parameters.')
@ -193,11 +202,12 @@ def _live(self, video_id, webpage, params):
return info return info
def _replay(self, video_id, webpage, params, video_params): def _replay(self, video_id, webpage, params, video_params):
long_video_id = video_params["vodId"]
VOD_KEY_ENDPOINT = 'https://www.vlive.tv/globalv-web/vam-web/video/v1.0/vod/%s/inkey' % video_id VOD_KEY_ENDPOINT = 'https://www.vlive.tv/globalv-web/vam-web/video/v1.0/vod/%s/inkey' % video_id
key_json = self._download_json(VOD_KEY_ENDPOINT, video_id, key_json = self._download_json(VOD_KEY_ENDPOINT, video_id,
headers={"referer": "https://www.vlive.tv"}) headers={"referer": "https://www.vlive.tv"})
key = key_json["inkey"] key = key_json["inkey"]
long_video_id = video_params["vodId"]
return merge_dicts( return merge_dicts(
self._get_common_fields(webpage, params), self._get_common_fields(webpage, params),