diff options
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 5 | ||||
| -rw-r--r-- | youtube_dl/extractor/hgtv.py | 31 | 
2 files changed, 35 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 55c639158..e61bb11c3 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -324,7 +324,10 @@ from .heise import HeiseIE  from .hellporno import HellPornoIE  from .helsinki import HelsinkiIE  from .hentaistigma import HentaiStigmaIE -from .hgtv import HGTVIE +from .hgtv import ( +    HGTVIE, +    HGTVComShowIE, +)  from .historicfilms import HistoricFilmsIE  from .hitbox import HitboxIE, HitboxLiveIE  from .hornbunny import HornBunnyIE diff --git a/youtube_dl/extractor/hgtv.py b/youtube_dl/extractor/hgtv.py index c3f0733cf..69543bff2 100644 --- a/youtube_dl/extractor/hgtv.py +++ b/youtube_dl/extractor/hgtv.py @@ -46,3 +46,34 @@ class HGTVIE(InfoExtractor):              'episode_number': int_or_none(embed_vars.get('episode')),              'ie_key': 'ThePlatform',          } + + +class HGTVComShowIE(InfoExtractor): +    IE_NAME = 'hgtv.com:show' +    _VALID_URL = r'https?://(?:www\.)?hgtv\.com/shows/[^/]+/(?P<id>[^/?#&]+)' +    _TEST = { +        'url': 'http://www.hgtv.com/shows/flip-or-flop/flip-or-flop-full-episodes-videos', +        'info_dict': { +            'id': 'flip-or-flop-full-episodes-videos', +            'title': 'Flip or Flop Full Episodes', +        }, +        'playlist_mincount': 15, +    } + +    def _real_extract(self, url): +        display_id = self._match_id(url) + +        webpage = self._download_webpage(url, display_id) + +        config = self._parse_json( +            self._search_regex( +                r'(?s)data-module=["\']video["\'][^>]*>.*?<script[^>]+type=["\']text/x-config["\'][^>]*>(.+?)</script', +                webpage, 'video config'), +            display_id)['channels'][0] + +        entries = [ +            self.url_result(video['releaseUrl']) +            for video in config['videos'] if video.get('releaseUrl')] + +        return self.playlist_result( +            entries, display_id, config.get('title'), config.get('description')) | 
