]> jfr.im git - yt-dlp.git/commitdiff
[CBS] Add ParamountPlusSeriesIE (#603)
authorAshish <redacted>
Sun, 1 Aug 2021 21:28:47 +0000 (02:58 +0530)
committerGitHub <redacted>
Sun, 1 Aug 2021 21:28:47 +0000 (02:58 +0530)
Authored by: Ashish0804

yt_dlp/extractor/cbs.py
yt_dlp/extractor/extractors.py

index ac3057d596f201c9a5e44278ef03067712c2bc60..716e945197b798e8efe551990416a07ae521c8cd 100644 (file)
@@ -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<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)
index c0c613e14e9a36410d9c238561bee86873a6e1e3..e12121073525f063ebd096d8badc036e853a63d6 100644 (file)
     CBCWatchIE,
     CBCOlympicsIE,
 )
-from .cbs import CBSIE
+from .cbs import (
+    CBSIE,
+    ParamountPlusSeriesIE,
+)
 from .cbslocal import (
     CBSLocalIE,
     CBSLocalArticleIE,