Fix formatting of lib/parse_query.py

pull/1062/head
Igor Chubin 1 month ago
parent c50bfe974e
commit ebd4b24aac

@ -3,11 +3,12 @@ import json
import zlib import zlib
import base64 import base64
def serialize(parsed_query): def serialize(parsed_query):
return base64.b64encode( return base64.b64encode(
zlib.compress( zlib.compress(json.dumps(parsed_query).encode("utf-8")), altchars=b"-_"
json.dumps(parsed_query).encode("utf-8")), ).decode("utf-8")
altchars=b"-_").decode("utf-8")
def deserialize(url): def deserialize(url):
@ -19,8 +20,8 @@ def deserialize(url):
try: try:
result = json.loads( result = json.loads(
zlib.decompress( zlib.decompress(base64.b64decode(string, altchars=b"-_")).decode("utf-8")
base64.b64decode(string, altchars=b"-_")).decode("utf-8")) )
except zlib.error: except zlib.error:
return None return None
@ -32,32 +33,32 @@ def deserialize(url):
def metric_or_imperial(query, lang, us_ip=False): def metric_or_imperial(query, lang, us_ip=False):
""" """ """
"""
# what units should be used # what units should be used
# metric or imperial # metric or imperial
# based on query and location source (imperial for US by default) # based on query and location source (imperial for US by default)
if query.get('use_metric', False) and not query.get('use_imperial', False): if query.get("use_metric", False) and not query.get("use_imperial", False):
query['use_imperial'] = False query["use_imperial"] = False
query['use_metric'] = True query["use_metric"] = True
elif query.get('use_imperial', False) and not query.get('use_metric', False): elif query.get("use_imperial", False) and not query.get("use_metric", False):
query['use_imperial'] = True query["use_imperial"] = True
query['use_metric'] = False query["use_metric"] = False
elif lang == 'us': elif lang == "us":
# slack uses m by default, to override it speciy us.wttr.in # slack uses m by default, to override it speciy us.wttr.in
query['use_imperial'] = True query["use_imperial"] = True
query['use_metric'] = False query["use_metric"] = False
else: else:
if us_ip: if us_ip:
query['use_imperial'] = True query["use_imperial"] = True
query['use_metric'] = False query["use_metric"] = False
else: else:
query['use_imperial'] = False query["use_imperial"] = False
query['use_metric'] = True query["use_metric"] = True
return query return query
def parse_query(args): def parse_query(args):
result = {} result = {}
@ -69,51 +70,51 @@ def parse_query(args):
if len(val) == 0: if len(val) == 0:
q += key q += key
continue continue
if val == 'True': if val == "True":
val = True val = True
if val == 'False': if val == "False":
val = False val = False
result[key] = val result[key] = val
if q is None: if q is None:
return result return result
if 'A' in q: if "A" in q:
result['force-ansi'] = True result["force-ansi"] = True
if 'd' in q: if "d" in q:
result['dumb'] = True result["dumb"] = True
if 'n' in q: if "n" in q:
result['narrow'] = True result["narrow"] = True
if 'm' in q: if "m" in q:
result['use_metric'] = True result["use_metric"] = True
if 'M' in q: if "M" in q:
result['use_metric'] = True result["use_metric"] = True
result['use_ms_for_wind'] = True result["use_ms_for_wind"] = True
if 'u' in q: if "u" in q:
result['use_imperial'] = True result["use_imperial"] = True
if 'I' in q: if "I" in q:
result['inverted_colors'] = True result["inverted_colors"] = True
if 't' in q: if "t" in q:
result['transparency'] = '150' result["transparency"] = "150"
if 'T' in q: if "T" in q:
result['no-terminal'] = True result["no-terminal"] = True
if 'p' in q: if "p" in q:
result['padding'] = True result["padding"] = True
for days in "0123": for days in "0123":
if days in q: if days in q:
result['days'] = days result["days"] = days
if 'q' in q: if "q" in q:
result['no-caption'] = True result["no-caption"] = True
if 'Q' in q: if "Q" in q:
result['no-city'] = True result["no-city"] = True
if 'F' in q: if "F" in q:
result['no-follow-line'] = True result["no-follow-line"] = True
for key, val in args.items(): for key, val in args.items():
if val == 'True': if val == "True":
val = True val = True
if val == 'False': if val == "False":
val = False val = False
if val: if val:
result[key] = val result[key] = val
@ -125,6 +126,7 @@ def parse_query(args):
return result return result
def parse_wttrin_png_name(name): def parse_wttrin_png_name(name):
""" """
Parse the PNG filename and return the result as a dictionary. Parse the PNG filename and return the result as a dictionary.
@ -141,29 +143,29 @@ def parse_wttrin_png_name(name):
parsed = {} parsed = {}
to_be_parsed = {} to_be_parsed = {}
if name.lower()[-4:] == '.png': if name.lower()[-4:] == ".png":
parsed['filetype'] = 'png' parsed["filetype"] = "png"
name = name[:-4] name = name[:-4]
parts = name.split('_') parts = name.split("_")
parsed['location'] = parts[0] parsed["location"] = parts[0]
one_letter_options = "" one_letter_options = ""
for part in parts[1:]: for part in parts[1:]:
if re.match('(?:[0-9]+)x', part): if re.match("(?:[0-9]+)x", part):
parsed['width'] = part[:-1] parsed["width"] = part[:-1]
elif re.match('x(?:[0-9]+)', part): elif re.match("x(?:[0-9]+)", part):
parsed['height'] = part[1:] parsed["height"] = part[1:]
elif re.match(part, '(?:[0-9]+)x(?:[0-9]+)'): elif re.match(part, "(?:[0-9]+)x(?:[0-9]+)"):
parsed['width'], parsed['height'] = part.split('x', 1) parsed["width"], parsed["height"] = part.split("x", 1)
elif '=' in part: elif "=" in part:
arg, val = part.split('=', 1) arg, val = part.split("=", 1)
to_be_parsed[arg] = val to_be_parsed[arg] = val
else: else:
one_letter_options += part one_letter_options += part
for letter in one_letter_options: for letter in one_letter_options:
to_be_parsed[letter] = '' to_be_parsed[letter] = ""
parsed.update(parse_query(to_be_parsed)) parsed.update(parse_query(to_be_parsed))

Loading…
Cancel
Save