diff options
Diffstat (limited to 'youtube_dl/extractor/vk.py')
| -rw-r--r-- | youtube_dl/extractor/vk.py | 30 | 
1 files changed, 24 insertions, 6 deletions
| diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index c30c5a8e5..90557fa61 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -8,15 +8,17 @@ from .common import InfoExtractor  from ..compat import (      compat_str,      compat_urllib_parse, -    compat_urllib_request,  )  from ..utils import (      ExtractorError,      orderedSet, +    sanitized_Request,      str_to_int,      unescapeHTML,      unified_strdate,  ) +from .vimeo import VimeoIE +from .pladform import PladformIE  class VKIE(InfoExtractor): @@ -163,6 +165,11 @@ class VKIE(InfoExtractor):              # vk wrapper              'url': 'http://www.biqle.ru/watch/847655_160197695',              'only_matching': True, +        }, +        { +            # pladform embed +            'url': 'https://vk.com/video-76116461_171554880', +            'only_matching': True,          }      ] @@ -181,7 +188,7 @@ class VKIE(InfoExtractor):              'pass': password.encode('cp1251'),          }) -        request = compat_urllib_request.Request( +        request = sanitized_Request(              'https://login.vk.com/?act=login',              compat_urllib_parse.urlencode(login_form).encode('utf-8'))          login_page = self._download_webpage( @@ -249,10 +256,17 @@ class VKIE(InfoExtractor):          if youtube_url:              return self.url_result(youtube_url, 'Youtube') +        vimeo_url = VimeoIE._extract_vimeo_url(url, info_page) +        if vimeo_url is not None: +            return self.url_result(vimeo_url) + +        pladform_url = PladformIE._extract_url(info_page) +        if pladform_url: +            return self.url_result(pladform_url) +          m_rutube = re.search(              r'\ssrc="((?:https?:)?//rutube\.ru\\?/video\\?/embed(?:.*?))\\?"', info_page)          if m_rutube is not None: -            self.to_screen('rutube video detected')              rutube_url = self._proto_relative_url(                  m_rutube.group(1).replace('\\', ''))              return self.url_result(rutube_url) @@ -276,9 +290,13 @@ class VKIE(InfoExtractor):              mobj.group(1) + ' ' + mobj.group(2)              upload_date = unified_strdate(mobj.group(1) + ' ' + mobj.group(2)) -        view_count = str_to_int(self._search_regex( -            r'"mv_views_count_number"[^>]*>([\d,.]+) views<', -            info_page, 'view count', fatal=False)) +        view_count = None +        views = self._html_search_regex( +            r'"mv_views_count_number"[^>]*>(.+?\bviews?)<', +            info_page, 'view count', fatal=False) +        if views: +            view_count = str_to_int(self._search_regex( +                r'([\d,.]+)', views, 'view count', fatal=False))          formats = [{              'format_id': k, | 
