From 2e0f5efcf145ab32d6a2848c7f385b76b136c974 Mon Sep 17 00:00:00 2001 From: David Hood <30076632+davidphood@users.noreply.github.com> Date: Sat, 27 Apr 2019 22:30:54 +1000 Subject: [PATCH] Improved error message when 'playlist' is missing from video_params. Error messaged will use the 'statusMessage', if available. This will give messages like: * "This episode is no longer available in iview." * "This episode is not yet available in iview." These additional lines are removed from the 'statusMessage': "Programs are normally available for 14 days." "You may enjoy similar programs to this, shown below." "Learn more about program availability in the FAQs, under Support." --- youtube_dl/extractor/abc.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/youtube_dl/extractor/abc.py b/youtube_dl/extractor/abc.py index 22bb4ba8e..1542e3503 100644 --- a/youtube_dl/extractor/abc.py +++ b/youtube_dl/extractor/abc.py @@ -182,6 +182,12 @@ class ABCIViewIE(InfoExtractor): video_id = self._match_id(url) video_params = self._download_json( 'https://iview.abc.net.au/api/programs/' + video_id, video_id) + if 'playlist' not in video_params: + error_message = video_params.get('statusMessage') + if error_message: + error_message = error_message.splitlines()[0] + raise ExtractorError(error_message, expected=True) + raise ExtractorError('no playlist information found in video params') title = unescapeHTML(video_params.get('title') or video_params['seriesTitle']) stream = next(s for s in video_params['playlist'] if s.get('type') in ('program', 'livestream'))