]> jfr.im git - yt-dlp.git/commitdiff
[utils] Escape URLs in `sanitized_Request`, not `sanitize_url`
authorpukkandan <redacted>
Tue, 1 Jun 2021 12:35:41 +0000 (18:05 +0530)
committerpukkandan <redacted>
Tue, 1 Jun 2021 14:59:02 +0000 (20:29 +0530)
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.

test/test_utils.py
yt_dlp/utils.py

index a8666caabd646cdba428f75730ad26a63b834ccf..cf541de4ad8b22fa71e334cdeb571ed23b1a03de 100644 (file)
@@ -239,6 +239,7 @@ def test_sanitize_url(self):
         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')
index 40b9c4cf38ca71f30ae7756b57f3ea58be48091d..ee434351568c68eb546d0569d64e69c83ffdf4e0 100644 (file)
@@ -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