[hotstar] Add support for alternative app state layout (closes #18320)

This commit is contained in:
Sergey M․ 2018-11-30 00:48:15 +07:00
parent 053e5b12b2
commit adbbdefc81
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -43,6 +43,7 @@ class HotStarIE(HotStarBaseIE):
IE_NAME = 'hotstar' IE_NAME = 'hotstar'
_VALID_URL = r'https?://(?:www\.)?hotstar\.com/(?:.+?[/-])?(?P<id>\d{10})' _VALID_URL = r'https?://(?:www\.)?hotstar\.com/(?:.+?[/-])?(?P<id>\d{10})'
_TESTS = [{ _TESTS = [{
# contentData
'url': 'https://www.hotstar.com/can-you-not-spread-rumours/1000076273', 'url': 'https://www.hotstar.com/can-you-not-spread-rumours/1000076273',
'info_dict': { 'info_dict': {
'id': '1000076273', 'id': '1000076273',
@ -57,6 +58,10 @@ class HotStarIE(HotStarBaseIE):
# m3u8 download # m3u8 download
'skip_download': True, 'skip_download': True,
} }
}, {
# contentDetail
'url': 'https://www.hotstar.com/movies/radha-gopalam/1000057157',
'only_matching': True,
}, { }, {
'url': 'http://www.hotstar.com/sports/cricket/rajitha-sizzles-on-debut-with-329/2001477583', 'url': 'http://www.hotstar.com/sports/cricket/rajitha-sizzles-on-debut-with-329/2001477583',
'only_matching': True, 'only_matching': True,
@ -74,8 +79,12 @@ class HotStarIE(HotStarBaseIE):
r'<script>window\.APP_STATE\s*=\s*({.+?})</script>', r'<script>window\.APP_STATE\s*=\s*({.+?})</script>',
webpage, 'app state'), video_id) webpage, 'app state'), video_id)
video_data = {} video_data = {}
getters = (
lambda x, k=k: x['initialState']['content%s' % k]['content']
for k in ('Data', 'Detail')
)
for v in app_state.values(): for v in app_state.values():
content = try_get(v, lambda x: x['initialState']['contentData']['content'], dict) content = try_get(v, getters, dict)
if content and content.get('contentId') == video_id: if content and content.get('contentId') == video_id:
video_data = content video_data = content