From e8384376c029f071927dafb6f8debb7e3eb847c2 Mon Sep 17 00:00:00 2001 From: Ashish <39122144+Ashish0804@users.noreply.github.com> Date: Mon, 2 Aug 2021 02:58:47 +0530 Subject: [PATCH] [CBS] Add ParamountPlusSeriesIE (#603) Authored by: Ashish0804 --- yt_dlp/extractor/cbs.py | 37 ++++++++++++++++++++++++++++++++++ yt_dlp/extractor/extractors.py | 5 ++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/yt_dlp/extractor/cbs.py b/yt_dlp/extractor/cbs.py index ac3057d59..716e94519 100644 --- a/yt_dlp/extractor/cbs.py +++ b/yt_dlp/extractor/cbs.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +from .common import InfoExtractor from .theplatform import ThePlatformFeedIE from ..utils import ( ExtractorError, @@ -122,3 +123,39 @@ def _extract_video_info(self, content_id, site='cbs', mpx_acc=2198311517): def _real_extract(self, url): content_id = self._match_id(url) return self._extract_video_info(content_id) + + +class ParamountPlusSeriesIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?paramountplus\.com/shows/(?P[a-zA-Z0-9-_]+)/?(?:[#?]|$)' + _TESTS = [{ + 'url': 'https://www.paramountplus.com/shows/drake-josh', + 'playlist_mincount': 50, + 'info_dict': { + 'id': 'drake-josh', + } + }, { + 'url': 'https://www.paramountplus.com/shows/hawaii_five_0/', + 'playlist_mincount': 240, + 'info_dict': { + 'id': 'hawaii_five_0', + } + }, { + 'url': 'https://www.paramountplus.com/shows/spongebob-squarepants/', + 'playlist_mincount': 248, + 'info_dict': { + 'id': 'spongebob-squarepants', + } + }] + _API_URL = 'https://www.paramountplus.com/shows/{}/xhr/episodes/page/0/size/100000/xs/0/season/0/' + + def _entries(self, show_name): + show_json = self._download_json(self._API_URL.format(show_name), video_id=show_name) + if show_json.get('success'): + for episode in show_json['result']['data']: + yield self.url_result( + 'https://www.paramountplus.com%s' % episode['url'], + ie=CBSIE.ie_key(), video_id=episode['content_id']) + + def _real_extract(self, url): + show_name = self._match_id(url) + return self.playlist_result(self._entries(show_name), playlist_id=show_name) diff --git a/yt_dlp/extractor/extractors.py b/yt_dlp/extractor/extractors.py index c0c613e14..e12121073 100644 --- a/yt_dlp/extractor/extractors.py +++ b/yt_dlp/extractor/extractors.py @@ -202,7 +202,10 @@ CBCWatchIE, CBCOlympicsIE, ) -from .cbs import CBSIE +from .cbs import ( + CBSIE, + ParamountPlusSeriesIE, +) from .cbslocal import ( CBSLocalIE, CBSLocalArticleIE,