diff options
| author | Sergey M․ <dstftw@gmail.com> | 2018-11-11 00:44:49 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2018-11-11 00:44:49 +0700 | 
| commit | 83852e57bf2f96ba50418b1a888ae5a1836549cc (patch) | |
| tree | 926f4f6d0667638be82a1c969dbad66d0890e2d3 | |
| parent | 96a91b15513af2121be1dd93871cc3769c06da3e (diff) | |
[zype] Add extractor (closes #18143)
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 20 | ||||
| -rw-r--r-- | youtube_dl/extractor/zype.py | 57 | 
3 files changed, 78 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index e5488cce4..b2b00c86f 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1478,3 +1478,4 @@ from .zattoo import (  )  from .zdf import ZDFIE, ZDFChannelIE  from .zingmp3 import ZingMp3IE +from .zype import ZypeIE diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 545e03371..59cf03faf 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -114,6 +114,7 @@ from .apa import APAIE  from .foxnews import FoxNewsIE  from .viqeo import ViqeoIE  from .expressen import ExpressenIE +from .zype import ZypeIE  class GenericIE(InfoExtractor): @@ -2071,6 +2072,20 @@ class GenericIE(InfoExtractor):              'playlist_count': 6,          },          { +            # Zype embed +            'url': 'https://www.cookscountry.com/episode/554-smoky-barbecue-favorites', +            'info_dict': { +                'id': '5b400b834b32992a310622b9', +                'ext': 'mp4', +                'title': 'Smoky Barbecue Favorites', +                'thumbnail': r're:^https?://.*\.jpe?g', +            }, +            'add_ie': [ZypeIE.ie_key()], +            'params': { +                'skip_download': True, +            }, +        }, +        {              # videojs embed              'url': 'https://video.sibnet.ru/shell.php?videoid=3422904',              'info_dict': { @@ -3129,6 +3144,11 @@ class GenericIE(InfoExtractor):              return self.playlist_from_matches(                  expressen_urls, video_id, video_title, ie=ExpressenIE.ie_key()) +        zype_urls = ZypeIE._extract_urls(webpage) +        if zype_urls: +            return self.playlist_from_matches( +                zype_urls, video_id, video_title, ie=ZypeIE.ie_key()) +          # Look for HTML5 media          entries = self._parse_html5_media_entries(url, webpage, video_id, m3u8_id='hls')          if entries: diff --git a/youtube_dl/extractor/zype.py b/youtube_dl/extractor/zype.py new file mode 100644 index 000000000..3b16e703b --- /dev/null +++ b/youtube_dl/extractor/zype.py @@ -0,0 +1,57 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor + + +class ZypeIE(InfoExtractor): +    _VALID_URL = r'https?://player\.zype\.com/embed/(?P<id>[\da-fA-F]+)\.js\?.*?api_key=[^&]+' +    _TEST = { +        'url': 'https://player.zype.com/embed/5b400b834b32992a310622b9.js?api_key=jZ9GUhRmxcPvX7M3SlfejB6Hle9jyHTdk2jVxG7wOHPLODgncEKVdPYBhuz9iWXQ&autoplay=false&controls=true&da=false', +        'md5': 'eaee31d474c76a955bdaba02a505c595', +        'info_dict': { +            'id': '5b400b834b32992a310622b9', +            'ext': 'mp4', +            'title': 'Smoky Barbecue Favorites', +            'thumbnail': r're:^https?://.*\.jpe?g', +        }, +    } + +    @staticmethod +    def _extract_urls(webpage): +        return [ +            mobj.group('url') +            for mobj in re.finditer( +                r'<script[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//player\.zype\.com/embed/[\da-fA-F]+\.js\?.*?api_key=.+?)\1', +                webpage)] + +    def _real_extract(self, url): +        video_id = self._match_id(url) + +        webpage = self._download_webpage(url, video_id) + +        title = self._search_regex( +            r'video_title\s*[:=]\s*(["\'])(?P<value>(?:(?!\1).)+)\1', webpage, +            'title', group='value') + +        m3u8_url = self._search_regex( +            r'(["\'])(?P<url>(?:(?!\1).)+\.m3u8(?:(?!\1).)*)\1', webpage, +            'm3u8 url', group='url') + +        formats = self._extract_m3u8_formats( +            m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', +            m3u8_id='hls') +        self._sort_formats(formats) + +        thumbnail = self._search_regex( +            r'poster\s*[:=]\s*(["\'])(?P<url>(?:(?!\1).)+)\1', webpage, 'thumbnail', +            default=False, group='url') + +        return { +            'id': video_id, +            'title': title, +            'thumbnail': thumbnail, +            'formats': formats, +        } | 
