-class HotStarIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?hotstar\.com/.*?[/-](?P<id>\d{10})'
- _TEST = {
- 'url': 'http://www.hotstar.com/on-air-with-aib--english-1000076273',
+class HotStarBaseIE(InfoExtractor):
+ _AKAMAI_ENCRYPTION_KEY = b'\x05\xfc\x1a\x01\xca\xc9\x4b\xc4\x12\xfc\x53\x12\x07\x75\xf9\xee'
+
+ def _call_api(self, path, video_id, query_name='contentId'):
+ st = int(time.time())
+ exp = st + 6000
+ auth = 'st=%d~exp=%d~acl=/*' % (st, exp)
+ auth += '~hmac=' + hmac.new(self._AKAMAI_ENCRYPTION_KEY, auth.encode(), hashlib.sha256).hexdigest()
+ response = self._download_json(
+ 'https://api.hotstar.com/' + path,
+ video_id, headers={
+ 'hotstarauth': auth,
+ 'x-country-code': 'IN',
+ 'x-platform-code': 'JIO',
+ }, query={
+ query_name: video_id,
+ 'tas': 10000,
+ })
+ if response['statusCode'] != 'OK':
+ raise ExtractorError(
+ response['body']['message'], expected=True)
+ return response['body']['results']
+
+
+class HotStarIE(HotStarBaseIE):
+ IE_NAME = 'hotstar'
+ _VALID_URL = r'https?://(?:www\.)?hotstar\.com/(?:.+?[/-])?(?P<id>\d{10})'
+ _TESTS = [{
+ # contentData
+ 'url': 'https://www.hotstar.com/can-you-not-spread-rumours/1000076273',