diff --git a/yt_dlp/extractor/newspicks.py b/yt_dlp/extractor/newspicks.py index 25be3c7203..6ebdba4282 100644 --- a/yt_dlp/extractor/newspicks.py +++ b/yt_dlp/extractor/newspicks.py @@ -50,7 +50,14 @@ class NewsPicksIE(InfoExtractor): webpage = self._download_webpage(url, video_id) fragment = self._search_nextjs_data(webpage, video_id)['props']['pageProps']['fragment'] - m3u8_url = traverse_obj(fragment, ('movie', 'movieUrl', {url_or_none}, {require('m3u8 URL')})) + movie = fragment['movie'] + + if traverse_obj(movie, ('viewable', {str})) == 'PARTIAL_FREE' and not traverse_obj(movie, ('canWatch', {bool})): + self.report_warning( + 'Full video is for Premium members. Without cookies, ' + f'only the preview is downloaded. {self._login_hint()}', video_id) + + m3u8_url = traverse_obj(movie, ('movieUrl', {url_or_none}, {require('m3u8 URL')})) formats, subtitles = self._extract_m3u8_formats_and_subtitles(m3u8_url, video_id, 'mp4') return { @@ -59,12 +66,12 @@ class NewsPicksIE(InfoExtractor): 'series': traverse_obj(fragment, ('series', 'title', {str})), 'series_id': series_id, 'subtitles': subtitles, - **traverse_obj(fragment, ('movie', { + **traverse_obj(movie, { 'title': ('title', {str}), 'cast': ('relatedUsers', ..., 'displayName', {str}, filter, all, filter), 'description': ('explanation', {clean_html}), 'release_timestamp': ('onAirStartDate', {parse_iso8601}), 'thumbnail': (('image', 'coverImageUrl'), {url_or_none}, any), 'timestamp': ('published', {parse_iso8601}), - })), + }), }