diff options
| author | Sergey M․ <dstftw@gmail.com> | 2018-01-08 21:53:03 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2018-01-08 21:53:03 +0700 | 
| commit | 8005dc68cbdfc15b6353a071ef87d7e57d69ff59 (patch) | |
| tree | 4b23de77baa1c433da31cde6cd69ca19109e27a4 /youtube_dl/extractor/odnoklassniki.py | |
| parent | a39e15c516865259735bd8f4f5629de5b0e77847 (diff) | |
[ok] Add support for live streams
Diffstat (limited to 'youtube_dl/extractor/odnoklassniki.py')
| -rw-r--r-- | youtube_dl/extractor/odnoklassniki.py | 26 | 
1 files changed, 23 insertions, 3 deletions
diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 8e13bcf1f..5c8b37e18 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -19,11 +19,11 @@ from ..utils import (  class OdnoklassnikiIE(InfoExtractor): -    _VALID_URL = r'https?://(?:(?:www|m|mobile)\.)?(?:odnoklassniki|ok)\.ru/(?:video(?:embed)?|web-api/video/moviePlayer)/(?P<id>[\d-]+)' +    _VALID_URL = r'https?://(?:(?:www|m|mobile)\.)?(?:odnoklassniki|ok)\.ru/(?:video(?:embed)?|web-api/video/moviePlayer|live)/(?P<id>[\d-]+)'      _TESTS = [{          # metadata in JSON          'url': 'http://ok.ru/video/20079905452', -        'md5': '6ba728d85d60aa2e6dd37c9e70fdc6bc', +        'md5': '0b62089b479e06681abaaca9d204f152',          'info_dict': {              'id': '20079905452',              'ext': 'mp4', @@ -35,7 +35,6 @@ class OdnoklassnikiIE(InfoExtractor):              'like_count': int,              'age_limit': 0,          }, -        'skip': 'Video has been blocked',      }, {          # metadataUrl          'url': 'http://ok.ru/video/63567059965189-0?fromTime=5', @@ -99,6 +98,9 @@ class OdnoklassnikiIE(InfoExtractor):      }, {          'url': 'http://mobile.ok.ru/video/20079905452',          'only_matching': True, +    }, { +        'url': 'https://www.ok.ru/live/484531969818', +        'only_matching': True,      }]      def _real_extract(self, url): @@ -184,6 +186,10 @@ class OdnoklassnikiIE(InfoExtractor):              })              return info +        assert title +        if provider == 'LIVE_TV_APP': +            info['title'] = self._live_title(title) +          quality = qualities(('4', '0', '1', '2', '3', '5'))          formats = [{ @@ -210,6 +216,20 @@ class OdnoklassnikiIE(InfoExtractor):              if fmt_type:                  fmt['quality'] = quality(fmt_type) +        # Live formats +        m3u8_url = metadata.get('hlsMasterPlaylistUrl') +        if m3u8_url: +            formats.extend(self._extract_m3u8_formats( +                m3u8_url, video_id, 'mp4', entry_protocol='m3u8', +                m3u8_id='hls', fatal=False)) +        rtmp_url = metadata.get('rtmpUrl') +        if rtmp_url: +            formats.append({ +                'url': rtmp_url, +                'format_id': 'rtmp', +                'ext': 'flv', +            }) +          self._sort_formats(formats)          info['formats'] = formats  | 
