diff options
| author | Petr Půlpán <Pulpan3@gmail.com> | 2014-06-29 16:44:37 +0200 | 
|---|---|---|
| committer | Petr Půlpán <Pulpan3@gmail.com> | 2014-06-29 16:44:37 +0200 | 
| commit | 825cdcec3c8a2ef8677ae60b57fe7fe6b936f473 (patch) | |
| tree | ba7d24f0d518793b0fe0276a6f728a1e2f7b4d23 | |
| parent | 41b610acab43c03f71fb64ae55c0912352143ae7 (diff) | |
| parent | 0364fa8b65a6c6742454ec5f3a858e06dc1527f7 (diff) | |
Merge branch 'master' of github.com:rg3/youtube-dl
| -rw-r--r-- | youtube_dl/extractor/generic.py | 5 | ||||
| -rw-r--r-- | youtube_dl/extractor/ivi.py | 2 | ||||
| -rw-r--r-- | youtube_dl/extractor/vk.py | 23 | 
3 files changed, 28 insertions, 2 deletions
| diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 9dd03aba4..869efb215 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -620,6 +620,11 @@ class GenericIE(InfoExtractor):          if mobj is not None:              return self.url_result(mobj.group('url'), 'VK') +        # Look for embedded ivi player +        mobj = re.search(r'<embed[^>]+?src=(["\'])(?P<url>https?://(?:www\.)?ivi\.ru/video/player.+?)\1', webpage) +        if mobj is not None: +            return self.url_result(mobj.group('url'), 'Ivi') +          # Look for embedded Huffington Post player          mobj = re.search(              r'<iframe[^>]+?src=(["\'])(?P<url>https?://embed\.live\.huffingtonpost\.com/.+?)\1', webpage) diff --git a/youtube_dl/extractor/ivi.py b/youtube_dl/extractor/ivi.py index 528be1524..4027deb70 100644 --- a/youtube_dl/extractor/ivi.py +++ b/youtube_dl/extractor/ivi.py @@ -14,7 +14,7 @@ from ..utils import (  class IviIE(InfoExtractor):      IE_DESC = 'ivi.ru'      IE_NAME = 'ivi' -    _VALID_URL = r'https?://(?:www\.)?ivi\.ru/watch(?:/(?P<compilationid>[^/]+))?/(?P<videoid>\d+)' +    _VALID_URL = r'https?://(?:www\.)?ivi\.ru/(?:watch/(?:[^/]+/)?|video/player\?.*?videoId=)(?P<videoid>\d+)'      _TESTS = [          # Single movie diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index c48528ad9..6c7db7a6f 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -16,7 +16,7 @@ from ..utils import (  class VKIE(InfoExtractor):      IE_NAME = 'vk.com' -    _VALID_URL = r'https?://vk\.com/(?:video_ext\.php\?.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+)|(?:.+?\?.*?z=)?video(?P<videoid>.*?)(?:\?|%2F|$))' +    _VALID_URL = r'https?://(?:m\.)?vk\.com/(?:video_ext\.php\?.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+)|(?:.+?\?.*?z=)?video(?P<videoid>.*?)(?:\?|%2F|$))'      _NETRC_MACHINE = 'vk'      _TESTS = [ @@ -91,6 +91,17 @@ class VKIE(InfoExtractor):              },              'skip': 'Requires vk account credentials',          }, +        { +            'url': 'http://m.vk.com/video-43215063_169084319?list=125c627d1aa1cebb83&from=wall-43215063_2566540', +            'md5': '0c45586baa71b7cb1d0784ee3f4e00a6', +            'note': 'ivi.ru embed', +            'info_dict': { +                'id': '60690', +                'ext': 'mp4', +                'title': 'Книга Илая', +                'duration': 6771, +            }, +        },      ]      def _login(self): @@ -134,6 +145,16 @@ class VKIE(InfoExtractor):          if m_yt is not None:              self.to_screen('Youtube video detected')              return self.url_result(m_yt.group(1), 'Youtube') + +        m_opts = re.search(r'(?s)var\s+opts\s*=\s*({.*?});', info_page) +        if m_opts: +            m_opts_url = re.search(r"url\s*:\s*'([^']+)", m_opts.group(1)) +            if m_opts_url: +                opts_url = m_opts_url.group(1) +                if opts_url.startswith('//'): +                    opts_url = 'http:' + opts_url +                return self.url_result(opts_url) +          data_json = self._search_regex(r'var vars = ({.*?});', info_page, 'vars')          data = json.loads(data_json) | 
