mirror of
https://github.com/ytdl-org/youtube-dl
synced 2024-11-27 17:26:51 +01:00
[hotstar] Add support for alternative app state layout (closes #18320)
This commit is contained in:
parent
053e5b12b2
commit
adbbdefc81
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user