]> Raphaƫl G. Git Repositories - youtubedl/blobdiff - youtube_dl/extractor/watchbox.py
debian/control: Mark compliance with Debian policy 4.2.1.
[youtubedl] / youtube_dl / extractor / watchbox.py
index be0bcba15380041ca1698c1687497bffc524b4ef..5a4e46e73a28e71a6ee20f30be9e3af6336c8d29 100644 (file)
@@ -10,6 +10,7 @@ from ..utils import (
     js_to_json,
     strip_or_none,
     try_get,
     js_to_json,
     strip_or_none,
     try_get,
+    unescapeHTML,
     unified_timestamp,
 )
 
     unified_timestamp,
 )
 
@@ -67,11 +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'(?s)source["\']?\s*:\s*({.+?})\s*[,}]', webpage, 'source',
-                default='{}'),
-            video_id, transform_source=js_to_json, fatal=False) 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)