aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-06-01 18:05:41 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-06-01 20:29:02 +0530
commitbc6b9bcd6554c10aa321cbfe151272e0df1a869b (patch)
treea41c075eb2f54f48087c201cd3ae5857b60a52ba
parent6e6390321c3937e26c3f51ee1840d9e97764371f (diff)
downloadhypervideo-pre-bc6b9bcd6554c10aa321cbfe151272e0df1a869b.tar.lz
hypervideo-pre-bc6b9bcd6554c10aa321cbfe151272e0df1a869b.tar.xz
hypervideo-pre-bc6b9bcd6554c10aa321cbfe151272e0df1a869b.zip
[utils] Escape URLs in `sanitized_Request`, not `sanitize_url`
d2558234cf5dd12d6896eed5427b7dcdb3ab7b5a added escaping of URLs while sanitizing. However, `sanitize_url` may not always receive an actual URL. Eg: When using `yt-dlp "search query" --default-search ytsearch`, `search query` gets escaped to `search%20query` before being prefixed with `ytsearch:` which is not the intended behavior. So the escaping is moved to `sanitized_Request` instead.
-rw-r--r--test/test_utils.py1
-rw-r--r--yt_dlp/utils.py4
2 files changed, 3 insertions, 2 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index a8666caab..cf541de4a 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -239,6 +239,7 @@ 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('foo bar'), 'foo bar')
def test_extract_basic_auth(self):
auth_header = lambda url: sanitized_Request(url).get_header('Authorization')
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index 40b9c4cf3..ee4343515 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -2165,7 +2165,7 @@ 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 extract_basic_auth(url):
@@ -2181,7 +2181,7 @@ def extract_basic_auth(url):
def sanitized_Request(url, *args, **kwargs):
- url, auth_header = extract_basic_auth(sanitize_url(url))
+ url, auth_header = extract_basic_auth(escape_url(sanitize_url(url)))
if auth_header is not None:
headers = args[1] if len(args) >= 2 else kwargs.setdefault('headers', {})
headers['Authorization'] = auth_header