From edb1262d600177adc309b852984f63e1df4e48af Mon Sep 17 00:00:00 2001 From: Timendum Date: Fri, 7 Sep 2018 10:19:39 +0200 Subject: [PATCH 1/2] [nbc] unescape url before sending (close #17374) --- youtube_dl/extractor/nbc.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/nbc.py b/youtube_dl/extractor/nbc.py index c843f8649..25c7e3a17 100644 --- a/youtube_dl/extractor/nbc.py +++ b/youtube_dl/extractor/nbc.py @@ -7,6 +7,7 @@ import re from .common import InfoExtractor from .theplatform import ThePlatformIE from .adobepass import AdobePassIE +from ..compat import compat_urllib_parse_unquote from ..utils import ( find_xpath_attr, smuggle_url, @@ -75,6 +76,11 @@ class NBCIE(AdobePassIE): 'url': 'https://www.nbc.com/classic-tv/charles-in-charge/video/charles-in-charge-pilot/n3310', 'only_matching': True, }, + { + # Percent escaped url + 'url': 'https://www.nbc.com/up-all-night/video/day-after-valentine%27s-day/n2189', + 'only_matching': True, + } ] def _real_extract(self, url): @@ -82,7 +88,7 @@ class NBCIE(AdobePassIE): permalink = 'http' + permalink response = self._download_json( 'https://api.nbc.com/v3/videos', video_id, query={ - 'filter[permalink]': permalink, + 'filter[permalink]': compat_urllib_parse_unquote(permalink), 'fields[videos]': 'description,entitlement,episodeNumber,guid,keywords,seasonNumber,title,vChipRating', 'fields[shows]': 'shortTitle', 'include': 'show.shortTitle', From 26439c8737dfa3c7877472217d00ee533aefc571 Mon Sep 17 00:00:00 2001 From: Sergey M Date: Sat, 8 Sep 2018 14:40:23 +0700 Subject: [PATCH 2/2] Update nbc.py --- youtube_dl/extractor/nbc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/nbc.py b/youtube_dl/extractor/nbc.py index 25c7e3a17..765c46fd2 100644 --- a/youtube_dl/extractor/nbc.py +++ b/youtube_dl/extractor/nbc.py @@ -85,10 +85,10 @@ class NBCIE(AdobePassIE): def _real_extract(self, url): permalink, video_id = re.match(self._VALID_URL, url).groups() - permalink = 'http' + permalink + permalink = 'http' + compat_urllib_parse_unquote(permalink) response = self._download_json( 'https://api.nbc.com/v3/videos', video_id, query={ - 'filter[permalink]': compat_urllib_parse_unquote(permalink), + 'filter[permalink]': permalink, 'fields[videos]': 'description,entitlement,episodeNumber,guid,keywords,seasonNumber,title,vChipRating', 'fields[shows]': 'shortTitle', 'include': 'show.shortTitle',