[Hotstar] Raise appropriate error for DRM

This commit is contained in:
Ashish Gupta 2021-10-16 13:21:59 +05:30 committed by pukkandan
parent e3950399e4
commit 6ff34542d2
No known key found for this signature in database
GPG key ID: 0F00D95A001F4698

View file

@ -203,35 +203,35 @@ def _real_extract(self, url):
format_url = re.sub( format_url = re.sub(
r'(?<=//staragvod)(\d)', r'web\1', format_url) r'(?<=//staragvod)(\d)', r'web\1', format_url)
tags = str_or_none(playback_set.get('tagsCombination')) or '' tags = str_or_none(playback_set.get('tagsCombination')) or ''
if tags and 'encryption:plain' not in tags:
continue
ext = determine_ext(format_url) ext = determine_ext(format_url)
current_formats, current_subs = [], {}
try: try:
if 'package:hls' in tags or ext == 'm3u8': if 'package:hls' in tags or ext == 'm3u8':
hls_formats, hls_subs = self._extract_m3u8_formats_and_subtitles( current_formats, current_subs = self._extract_m3u8_formats_and_subtitles(
format_url, video_id, 'mp4', format_url, video_id, 'mp4',
entry_protocol='m3u8_native', entry_protocol='m3u8_native',
m3u8_id=f'{dr}-hls', headers=headers) m3u8_id=f'{dr}-hls', headers=headers)
formats.extend(hls_formats)
subs = self._merge_subtitles(subs, hls_subs)
elif 'package:dash' in tags or ext == 'mpd': elif 'package:dash' in tags or ext == 'mpd':
dash_formats, dash_subs = self._extract_mpd_formats_and_subtitles( current_formats, current_subs = self._extract_mpd_formats_and_subtitles(
format_url, video_id, mpd_id=f'{dr}-dash', headers=headers) format_url, video_id, mpd_id=f'{dr}-dash', headers=headers)
formats.extend(dash_formats)
subs = self._merge_subtitles(subs, dash_subs)
elif ext == 'f4m': elif ext == 'f4m':
# produce broken files # produce broken files
pass pass
else: else:
formats.append({ current_formats = [{
'url': format_url, 'url': format_url,
'width': int_or_none(playback_set.get('width')), 'width': int_or_none(playback_set.get('width')),
'height': int_or_none(playback_set.get('height')), 'height': int_or_none(playback_set.get('height')),
}) }]
except ExtractorError as e: except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403: if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
geo_restricted = True geo_restricted = True
continue continue
if tags and 'encryption:plain' not in tags:
for f in current_formats:
f['has_drm'] = True
formats.extend(current_formats)
subs = self._merge_subtitles(subs, current_subs)
if not formats and geo_restricted: if not formats and geo_restricted:
self.raise_geo_restricted(countries=['IN'], metadata_available=True) self.raise_geo_restricted(countries=['IN'], metadata_available=True)
self._sort_formats(formats) self._sort_formats(formats)