diff options
| author | remitamine <remitamine@gmail.com> | 2015-12-03 20:33:22 +0100 | 
|---|---|---|
| committer | remitamine <remitamine@gmail.com> | 2015-12-03 20:33:22 +0100 | 
| commit | 78653a33aa00ba5205940c2baac5d9f019795b88 (patch) | |
| tree | 246fd038effd402bc66de4c8afb36e6c318efcaa /youtube_dl/extractor/rutube.py | |
| parent | 77302fe5c989b9cafcb675c0a03642b80fa557ff (diff) | |
| parent | 24dc1ed715239f85eb3d5f71a707da1dd2bc7773 (diff) | |
Merge remote-tracking branch 'upstream/master' into bliptv
Diffstat (limited to 'youtube_dl/extractor/rutube.py')
| -rw-r--r-- | youtube_dl/extractor/rutube.py | 34 | 
1 files changed, 26 insertions, 8 deletions
| diff --git a/youtube_dl/extractor/rutube.py b/youtube_dl/extractor/rutube.py index d94dc7399..6b09550b0 100644 --- a/youtube_dl/extractor/rutube.py +++ b/youtube_dl/extractor/rutube.py @@ -9,7 +9,7 @@ from ..compat import (      compat_str,  )  from ..utils import ( -    ExtractorError, +    determine_ext,      unified_strdate,  ) @@ -51,10 +51,25 @@ class RutubeIE(InfoExtractor):              'http://rutube.ru/api/play/options/%s/?format=json' % video_id,              video_id, 'Downloading options JSON') -        m3u8_url = options['video_balancer'].get('m3u8') -        if m3u8_url is None: -            raise ExtractorError('Couldn\'t find m3u8 manifest url') -        formats = self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4') +        formats = [] +        for format_id, format_url in options['video_balancer'].items(): +            ext = determine_ext(format_url) +            if ext == 'm3u8': +                m3u8_formats = self._extract_m3u8_formats( +                    format_url, video_id, 'mp4', m3u8_id=format_id, fatal=False) +                if m3u8_formats: +                    formats.extend(m3u8_formats) +            elif ext == 'f4m': +                f4m_formats = self._extract_f4m_formats( +                    format_url, video_id, f4m_id=format_id, fatal=False) +                if f4m_formats: +                    formats.extend(f4m_formats) +            else: +                formats.append({ +                    'url': format_url, +                    'format_id': format_id, +                }) +        self._sort_formats(formats)          return {              'id': video['id'], @@ -74,9 +89,9 @@ class RutubeIE(InfoExtractor):  class RutubeEmbedIE(InfoExtractor):      IE_NAME = 'rutube:embed'      IE_DESC = 'Rutube embedded videos' -    _VALID_URL = 'https?://rutube\.ru/video/embed/(?P<id>[0-9]+)' +    _VALID_URL = 'https?://rutube\.ru/(?:video|play)/embed/(?P<id>[0-9]+)' -    _TEST = { +    _TESTS = [{          'url': 'http://rutube.ru/video/embed/6722881?vk_puid37=&vk_puid38=',          'info_dict': {              'id': 'a10e53b86e8f349080f718582ce4c661', @@ -90,7 +105,10 @@ class RutubeEmbedIE(InfoExtractor):          'params': {              'skip_download': 'Requires ffmpeg',          }, -    } +    }, { +        'url': 'http://rutube.ru/play/embed/8083783', +        'only_matching': True, +    }]      def _real_extract(self, url):          embed_id = self._match_id(url) | 
