diff options
| author | 2024-10-14 03:02:11 -0400 | |
|---|---|---|
| committer | 2024-10-14 03:02:11 -0400 | |
| commit | b28a9957b772b1d063bea4a50c0bbcb04cdef791 (patch) | |
| tree | bdf3b3bafb821af5cd41206d66c4a0b7a60e2a92 /gallery_dl/text.py | |
| parent | 061cbaf29e92e57152175f877740d3d1a2157bd6 (diff) | |
| parent | 0db541f524e1774865efebcbe5653e9ad76ea2e8 (diff) | |
Update upstream source from tag 'upstream/1.27.6'
Update to upstream version '1.27.6'
with Debian dir bbafbef8a09f7a005c8afa3ebb1c8527d67c172a
Diffstat (limited to 'gallery_dl/text.py')
| -rw-r--r-- | gallery_dl/text.py | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/gallery_dl/text.py b/gallery_dl/text.py index 8517cdf..5fd5a40 100644 --- a/gallery_dl/text.py +++ b/gallery_dl/text.py @@ -238,12 +238,49 @@ def parse_float(value, default=0.0): def parse_query(qs): - """Parse a query string into key-value pairs""" + """Parse a query string into name-value pairs + + Ignore values whose name has been seen before + """ + if not qs: + return {} + + result = {} + try: + 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 + + +def parse_query_list(qs): + """Parse a query string into name-value pairs + + Combine values of duplicate names into lists + """ + 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("+", " ")) + value = unquote(value.replace("+", " ")) + if name in result: + rvalue = result[name] + if isinstance(rvalue, list): + rvalue.append(value) + else: + result[name] = [rvalue, value] + else: + result[name] = value except Exception: pass return result |
