[mtv] fix mgid extraction(closes #26841)
authorRemita Amine <remitamine@gmail.com>
Thu, 19 Nov 2020 10:54:54 +0000 (11:54 +0100)
committerRemita Amine <remitamine@gmail.com>
Thu, 19 Nov 2020 10:57:09 +0000 (11:57 +0100)
youtube_dl/extractor/mtv.py

index fedd5f46bba67eb5cb4304d38aa0bdffa537e11d..df1034fc5751dd715b31a5ac6c92d36f410da6c9 100644 (file)
@@ -349,6 +349,18 @@ class MTVIE(MTVServicesInfoExtractor):
         'only_matching': True,
     }]
 
+    @staticmethod
+    def extract_child_with_type(parent, t):
+        children = parent['children']
+        return next(c for c in children if c.get('type') == t)
+
+    def _extract_mgid(self, webpage):
+        data = self._parse_json(self._search_regex(
+            r'__DATA__\s*=\s*({.+?});', webpage, 'data'), None)
+        main_container = self.extract_child_with_type(data, 'MainContainer')
+        video_player = self.extract_child_with_type(main_container, 'VideoPlayer')
+        return video_player['props']['media']['video']['config']['uri']
+
 
 class MTVJapanIE(MTVServicesInfoExtractor):
     IE_NAME = 'mtvjapan'