]> gitweb @ CieloNegro.org - youtube-dl.git/blobdiff - youtube_dl/extractor/myvi.py
Fix "invalid escape sequences" error on Python 3.6
[youtube-dl.git] / youtube_dl / extractor / myvi.py
index 9f4330f506ae594b35a4052147c931cf862b218a..621ae74a7930cbaefb1f5c867de27d70499fe5d6 100644 (file)
@@ -1,21 +1,24 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
+import re
+
 from .vimple import SprutoBaseIE
 
 
-class MyviEmbedIE(SprutoBaseIE):
+class MyviIE(SprutoBaseIE):
     _VALID_URL = r'''(?x)
                     https?://
-                        myvi\.ru/player/
+                        myvi\.(?:ru/player|tv)/
                             (?:
                                 (?:
                                     embed/html|
+                                    flash|
                                     api/Video/Get
                                 )/|
                                 content/preloader\.swf\?.*\bid=
                             )
-                            (?P<id>[\da-zA-Z_]+)
+                            (?P<id>[\da-zA-Z_-]+)
                     '''
     _TESTS = [{
         'url': 'http://myvi.ru/player/embed/html/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
@@ -24,7 +27,7 @@ class MyviEmbedIE(SprutoBaseIE):
             'id': 'f16b2bbd-cde8-481c-a981-7cd48605df43',
             'ext': 'mp4',
             'title': 'хозяин жизни',
-            'thumbnail': 're:^https?://.*\.jpg$',
+            'thumbnail': r're:^https?://.*\.jpg$',
             'duration': 25,
         },
     }, {
@@ -33,8 +36,21 @@ class MyviEmbedIE(SprutoBaseIE):
     }, {
         'url': 'http://myvi.ru/player/api/Video/Get/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
         'only_matching': True,
+    }, {
+        'url': 'http://myvi.tv/embed/html/oTGTNWdyz4Zwy_u1nraolwZ1odenTd9WkTnRfIL9y8VOgHYqOHApE575x4_xxS9Vn0?ap=0',
+        'only_matching': True,
+    }, {
+        'url': 'http://myvi.ru/player/flash/ocp2qZrHI-eZnHKQBK4cZV60hslH8LALnk0uBfKsB-Q4WnY26SeGoYPi8HWHxu0O30',
+        'only_matching': True,
     }]
 
+    @classmethod
+    def _extract_url(cls, webpage):
+        mobj = re.search(
+            r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//myvi\.(?:ru/player|tv)/(?:embed/html|flash)/[^"]+)\1', webpage)
+        if mobj:
+            return mobj.group('url')
+
     def _real_extract(self, url):
         video_id = self._match_id(url)