diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:37:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:37:42 +0000 |
commit | c7bab7c39fd51c0812f70020172766303191bc01 (patch) | |
tree | 56c05fbdd4fc47409d48ba318a4b621a7b0d299a /yt_dlp/extractor/hgtv.py | |
parent | Initial commit. (diff) | |
download | yt-dlp-c7bab7c39fd51c0812f70020172766303191bc01.tar.xz yt-dlp-c7bab7c39fd51c0812f70020172766303191bc01.zip |
Adding upstream version 2023.03.04.upstream/2023.03.04upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'yt_dlp/extractor/hgtv.py')
-rw-r--r-- | yt_dlp/extractor/hgtv.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/yt_dlp/extractor/hgtv.py b/yt_dlp/extractor/hgtv.py new file mode 100644 index 0000000..c40017d --- /dev/null +++ b/yt_dlp/extractor/hgtv.py @@ -0,0 +1,37 @@ +from .common import InfoExtractor + + +class HGTVComShowIE(InfoExtractor): + IE_NAME = 'hgtv.com:show' + _VALID_URL = r'https?://(?:www\.)?hgtv\.com/shows/[^/]+/(?P<id>[^/?#&]+)' + _TESTS = [{ + # data-module="video" + 'url': 'http://www.hgtv.com/shows/flip-or-flop/flip-or-flop-full-episodes-season-4-videos', + 'info_dict': { + 'id': 'flip-or-flop-full-episodes-season-4-videos', + 'title': 'Flip or Flop Full Episodes', + }, + 'playlist_mincount': 15, + }, { + # data-deferred-module="video" + 'url': 'http://www.hgtv.com/shows/good-bones/episodes/an-old-victorian-house-gets-a-new-facelift', + 'only_matching': True, + }] + + 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-(?:deferred-)?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')) |