[meta] Add support for pladform embeds
authorSergey M․ <dstftw@gmail.com>
Thu, 30 Jun 2016 16:20:44 +0000 (23:20 +0700)
committerSergey M․ <dstftw@gmail.com>
Thu, 30 Jun 2016 16:20:44 +0000 (23:20 +0700)
youtube_dl/extractor/meta.py

index 2e2db5620275c1d45e8d6494e7c2783009c88e46..42bedc48fa07ccdfd876ead9fc2c5bfa22a63988 100644 (file)
@@ -2,6 +2,7 @@
 from __future__ import unicode_literals
 
 from .common import InfoExtractor
+from .pladform import PladformIE
 from ..utils import (
     unescapeHTML,
     int_or_none,
@@ -27,34 +28,45 @@ class METAIE(InfoExtractor):
     }, {
         'url': 'http://video.meta.ua/iframe/5502115',
         'only_matching': True,
+    }, {
+        # pladform embed
+        'url': 'http://video.meta.ua/7121015.video',
+        'only_matching': True,
     }]
 
     def _real_extract(self, url):
         video_id = self._match_id(url)
         webpage = self._download_webpage(url, video_id)
 
-        st_html5 = self._search_regex(r"st_html5\s*=\s*'#([^']+)'", webpage, 'uppod html5 st')
-        json_str = ''
-        for i in range(0, len(st_html5), 3):
-            json_str += '&#x0%s;' % st_html5[i:i + 3]
-        uppod_data = self._parse_json(unescapeHTML(json_str), video_id)
-        error = uppod_data.get('customnotfound')
-        if error:
-            raise ExtractorError('%s said: %s' % (self.IE_NAME, error), expected=True)
-
-        video_url = uppod_data['file']
-        info = {
-            'id': video_id,
-            'url': video_url,
-            'title': uppod_data.get('comment') or self._og_search_title(webpage),
-            'description': self._og_search_description(webpage, default=None),
-            'thumbnail': uppod_data.get('poster') or self._og_search_thumbnail(webpage),
-            'duration': int_or_none(self._og_search_property(
-                'video:duration', webpage, default=None)),
-        }
-        if 'youtube.com/' in video_url:
-            info.update({
-                '_type': 'url_transparent',
-                'ie_key': 'Youtube',
-            })
-        return info
+        st_html5 = self._search_regex(
+            r"st_html5\s*=\s*'#([^']+)'", webpage, 'uppod html5 st', default=None)
+
+        if st_html5:
+            json_str = ''
+            for i in range(0, len(st_html5), 3):
+                json_str += '&#x0%s;' % st_html5[i:i + 3]
+            uppod_data = self._parse_json(unescapeHTML(json_str), video_id)
+            error = uppod_data.get('customnotfound')
+            if error:
+                raise ExtractorError('%s said: %s' % (self.IE_NAME, error), expected=True)
+
+            video_url = uppod_data['file']
+            info = {
+                'id': video_id,
+                'url': video_url,
+                'title': uppod_data.get('comment') or self._og_search_title(webpage),
+                'description': self._og_search_description(webpage, default=None),
+                'thumbnail': uppod_data.get('poster') or self._og_search_thumbnail(webpage),
+                'duration': int_or_none(self._og_search_property(
+                    'video:duration', webpage, default=None)),
+            }
+            if 'youtube.com/' in video_url:
+                info.update({
+                    '_type': 'url_transparent',
+                    'ie_key': 'Youtube',
+                })
+            return info
+
+        pladform_url = PladformIE._extract_url(webpage)
+        if pladform_url:
+            return self.url_result(pladform_url)