From 8ea9ae60086a8d7dabf570928e6b2692c59babeb Mon Sep 17 00:00:00 2001 From: Mohammed Yaseen Mowzer Date: Thu, 14 Jun 2018 17:12:33 +0200 Subject: [PATCH 1/4] Continue trying after _parse_jwplayer_data fails --- youtube_dl/extractor/generic.py | 10 +++++++--- youtube_dl/utils.py | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index dad951b75..1a88a03d0 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -3119,9 +3119,13 @@ class GenericIE(InfoExtractor): jwplayer_data = self._find_jwplayer_data( webpage, video_id, transform_source=js_to_json) if jwplayer_data: - info = self._parse_jwplayer_data( - jwplayer_data, video_id, require_title=False, base_url=url) - return merge_dicts(info, info_dict) + try: + info = self._parse_jwplayer_data( + jwplayer_data, video_id, require_title=False, base_url=url) + return merge_dicts(info, info_dict) + except ExtractorError, e: + self.to_screen(e.msg_without_bug_report) + self.to_screen("Trying different extractor") # Video.js embed mobj = re.search( diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 6a3199fb9..979661a1a 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -748,6 +748,7 @@ class ExtractorError(YoutubeDLError): msg = video_id + ': ' + msg if cause: msg += ' (caused by %r)' % cause + self.msg_without_bug_report = msg if not expected: msg += bug_reports_message() super(ExtractorError, self).__init__(msg) From 695c672e9951c161693e2a79195909b4df428d28 Mon Sep 17 00:00:00 2001 From: Mohammed Yaseen Mowzer Date: Sat, 16 Jun 2018 10:31:17 +0200 Subject: [PATCH 2/4] Use python 3 try-except syntax --- youtube_dl/extractor/generic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 1a88a03d0..c5cc2cae7 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -3123,7 +3123,7 @@ class GenericIE(InfoExtractor): info = self._parse_jwplayer_data( jwplayer_data, video_id, require_title=False, base_url=url) return merge_dicts(info, info_dict) - except ExtractorError, e: + except ExtractorError as e: self.to_screen(e.msg_without_bug_report) self.to_screen("Trying different extractor") From ecf6f49f7ef3792a1de20bbed562f366e7ec31ea Mon Sep 17 00:00:00 2001 From: Mohammed Yaseen Mowzer Date: Sat, 16 Jun 2018 11:19:57 +0200 Subject: [PATCH 3/4] Add test for fallback after _parse_jwplayer_data fails --- youtube_dl/extractor/generic.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index c5cc2cae7..e6f9370bc 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -2069,6 +2069,20 @@ class GenericIE(InfoExtractor): }, 'skip': 'TODO: fix nested playlists processing in tests', }, + { + # Test for fallback after _parse_jwplayer_data fails + # See https://github.com/rg3/youtube-dl/pull/16735 + 'url': 'http://www.anime1.com/watch/nichijou/episode-1', + 'info_dict': { + 'id': '[HorribleSubs] Nichijou - 01 [480p]_a1_BRK', + 'title': 'Nichijou - Episode 1', + 'ext': 'mp4', + 'uploader': 'www.anime1.com', + }, + 'params': { + 'skip_download': True, + } + }, # { # # TODO: find another test # # http://schema.org/VideoObject From ceca62c566f13009f224ddc5c82eb6444a17553b Mon Sep 17 00:00:00 2001 From: Mohammed Yaseen Mowzer Date: Mon, 2 Jul 2018 21:48:42 +0200 Subject: [PATCH 4/4] Remove superfluous error messages --- youtube_dl/extractor/generic.py | 6 +++--- youtube_dl/utils.py | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index e6f9370bc..ce79b00e9 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -3137,9 +3137,9 @@ class GenericIE(InfoExtractor): info = self._parse_jwplayer_data( jwplayer_data, video_id, require_title=False, base_url=url) return merge_dicts(info, info_dict) - except ExtractorError as e: - self.to_screen(e.msg_without_bug_report) - self.to_screen("Trying different extractor") + except ExtractorError: + # If there is an error, try a different extractor + pass # Video.js embed mobj = re.search( diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 979661a1a..6a3199fb9 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -748,7 +748,6 @@ class ExtractorError(YoutubeDLError): msg = video_id + ': ' + msg if cause: msg += ' (caused by %r)' % cause - self.msg_without_bug_report = msg if not expected: msg += bug_reports_message() super(ExtractorError, self).__init__(msg)