From 673d407579ef237519b5e589ae2e4c08dca6dd1e Mon Sep 17 00:00:00 2001 From: Fyssion Date: Thu, 25 Aug 2022 15:01:34 -0500 Subject: [PATCH] [utils] Fix sanitize_url regression with search queries Commit 1baa0f5 introduced a regression which caused search queries such as "ytsearch:search query" to be changed to "ytsearch:search%20query". This arose when setting the default-search option to "ytsearch" and when calling the YoutubeDL.extract_info method. This occurred because sanitize_url, which doesn't always receive a URL, performs a URL escape. Instead, this escape should be performed in sanitized_Request, which always receives a URL. --- test/test_utils.py | 5 +++++ youtube_dl/utils.py | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/test/test_utils.py b/test/test_utils.py index f1a748dde..e8eb8b216 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -65,6 +65,7 @@ from youtube_dl.utils import ( sanitize_filename, sanitize_path, sanitize_url, + sanitized_Request, expand_path, prepend_extension, replace_extension, @@ -236,6 +237,10 @@ class TestUtil(unittest.TestCase): self.assertEqual(sanitize_url('httpss://foo.bar'), 'https://foo.bar') self.assertEqual(sanitize_url('rmtps://foo.bar'), 'rtmps://foo.bar') self.assertEqual(sanitize_url('https://foo.bar'), 'https://foo.bar') + self.assertEqual(sanitize_url('ytsearch:search query'), 'ytsearch:search query') + + def test_sanitized_Request(self): + self.assertEqual(sanitized_Request('https://foo.bar/foo bar').get_full_url(), 'https://foo.bar/foo%20bar') def test_expand_path(self): def env(var): diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index fea38ed32..49494b7b7 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -2169,11 +2169,11 @@ def sanitize_url(url): for mistake, fixup in COMMON_TYPOS: if re.match(mistake, url): return re.sub(mistake, fixup, url) - return escape_url(url) + return url def sanitized_Request(url, *args, **kwargs): - return compat_urllib_request.Request(sanitize_url(url), *args, **kwargs) + return compat_urllib_request.Request(escape_url(sanitize_url(url)), *args, **kwargs) def expand_path(s):