|
@@ -10,6 +10,7 @@ from ..utils import (
|
|
js_to_json,
|
|
js_to_json,
|
|
strip_or_none,
|
|
strip_or_none,
|
|
try_get,
|
|
try_get,
|
|
|
|
+ unescapeHTML,
|
|
unified_timestamp,
|
|
unified_timestamp,
|
|
)
|
|
)
|
|
|
|
|
|
@@ -67,12 +68,20 @@ class WatchBoxIE(InfoExtractor):
|
|
|
|
|
|
webpage = self._download_webpage(url, video_id)
|
|
webpage = self._download_webpage(url, video_id)
|
|
|
|
|
|
- source = (self._parse_json(
|
|
|
|
|
|
+ player_config = self._parse_json(
|
|
self._search_regex(
|
|
self._search_regex(
|
|
- r'playerConf\s*=\s*({.+?})\s*;', webpage, 'player config',
|
|
|
|
- default='{}'),
|
|
|
|
- video_id, transform_source=js_to_json,
|
|
|
|
- fatal=False) or {}).get('source') or {}
|
|
|
|
|
|
+ r'data-player-conf=(["\'])(?P<data>{.+?})\1', webpage,
|
|
|
|
+ 'player config', default='{}', group='data'),
|
|
|
|
+ video_id, transform_source=unescapeHTML, fatal=False)
|
|
|
|
+
|
|
|
|
+ if not player_config:
|
|
|
|
+ player_config = self._parse_json(
|
|
|
|
+ self._search_regex(
|
|
|
|
+ r'playerConf\s*=\s*({.+?})\s*;', webpage, 'player config',
|
|
|
|
+ default='{}'),
|
|
|
|
+ video_id, transform_source=js_to_json, fatal=False) or {}
|
|
|
|
+
|
|
|
|
+ source = player_config.get('source') or {}
|
|
|
|
|
|
video_id = compat_str(source.get('videoId') or video_id)
|
|
video_id = compat_str(source.get('videoId') or video_id)
|
|
|
|
|