- wat_id = self._html_search_regex(
- r'(["\'])(?:https?:)?//www\.wat\.tv/embedframe/.*?(?P<id>\d{8})\1',
- webpage, 'wat id', group='id')
+
+ wat_id = None
+
+ data = self._parse_json(
+ self._search_regex(
+ r'__APOLLO_STATE__\s*=\s*({.+?})\s*(?:;|</script>)', webpage,
+ 'data', default='{}'), video_id, fatal=False)
+
+ if data:
+ try:
+ wat_id = next(
+ video.get('streamId')
+ for key, video in data.items()
+ if isinstance(video, dict)
+ and video.get('slug') == video_id)
+ if not isinstance(wat_id, compat_str) or not wat_id.isdigit():
+ wat_id = None
+ except StopIteration:
+ pass
+
+ if not wat_id:
+ wat_id = self._html_search_regex(
+ (r'(["\'])(?:https?:)?//www\.wat\.tv/embedframe/.*?(?P<id>\d{8})\1',
+ r'(["\']?)streamId\1\s*:\s*(["\']?)(?P<id>\d+)\2'),
+ webpage, 'wat id', group='id')
+