From 9f49cf16e8bbba4e558b2c5eba382dad76f78598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 1 Oct 2024 20:04:43 +0200 Subject: [PATCH] [text] implement 'parse_query()' without using 'urllib.parse.parse_qsl' doesn't support bytes anymore, but is twice as fast --- gallery_dl/text.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gallery_dl/text.py b/gallery_dl/text.py index 8517cdf5..b186a8e2 100644 --- a/gallery_dl/text.py +++ b/gallery_dl/text.py @@ -239,11 +239,17 @@ def parse_float(value, default=0.0): def parse_query(qs): """Parse a query string into key-value pairs""" + if not qs: + return {} + result = {} try: - for key, value in urllib.parse.parse_qsl(qs): - if key not in result: - result[key] = value + for name_value in qs.split("&"): + name, eq, value = name_value.partition("=") + if eq: + name = unquote(name.replace("+", " ")) + if name not in result: + result[name] = unquote(value.replace("+", " ")) except Exception: pass return result