aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/cbs.py
diff options
context:
space:
mode:
authorAshish <39122144+Ashish0804@users.noreply.github.com>2021-08-02 02:58:47 +0530
committerGitHub <noreply@github.com>2021-08-02 02:58:47 +0530
commite8384376c029f071927dafb6f8debb7e3eb847c2 (patch)
tree637b538288db9b9ff4bdbb92239493f16691fa8a /yt_dlp/extractor/cbs.py
parente7e94f2a5c5de78dd281de752f2b3a8663159726 (diff)
downloadhypervideo-pre-e8384376c029f071927dafb6f8debb7e3eb847c2.tar.lz
hypervideo-pre-e8384376c029f071927dafb6f8debb7e3eb847c2.tar.xz
hypervideo-pre-e8384376c029f071927dafb6f8debb7e3eb847c2.zip
[CBS] Add ParamountPlusSeriesIE (#603)
Authored by: Ashish0804
Diffstat (limited to 'yt_dlp/extractor/cbs.py')
-rw-r--r--yt_dlp/extractor/cbs.py37
1 files changed, 37 insertions, 0 deletions
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 @@ class CBSIE(CBSBaseIE):
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<id>[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)