You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wttr.in/lib/parse_query.py

89 lines
2.2 KiB

def metric_or_imperial(query, lang, us_ip=False):
"""
"""
# what units should be used
# metric or imperial
# based on query and location source (imperial for US by default)
if query.get('use_metric', False) and not query.get('use_imperial', False):
query['use_imperial'] = False
query['use_metric'] = True
elif query.get('use_imperial', False) and not query.get('use_metric', False):
query['use_imperial'] = True
query['use_metric'] = False
elif lang == 'us':
# slack uses m by default, to override it speciy us.wttr.in
query['use_imperial'] = True
query['use_metric'] = False
else:
if us_ip:
query['use_imperial'] = True
query['use_metric'] = False
else:
query['use_imperial'] = False
query['use_metric'] = True
return query
def parse_query(args):
result = {}
reserved_args = ["lang"]
#q = "&".join(x for x in args.keys() if x not in reserved_args)
q = ""
for key, val in args.items():
if len(val) == 0:
q += key
continue
if val == 'True':
val = True
if val == 'False':
val = False
result[key] = val
if q is None:
return result
if 'A' in q:
result['force-ansi'] = True
if 'n' in q:
result['narrow'] = True
if 'm' in q:
result['use_metric'] = True
if 'M' in q:
result['use_ms_for_wind'] = True
if 'u' in q:
result['use_imperial'] = True
if 'I' in q:
result['inverted_colors'] = True
if 't' in q:
result['transparency'] = '150'
if 'T' in q:
result['no-terminal'] = True
if 'p' in q:
result['padding'] = True
for days in "0123":
if days in q:
result['days'] = days
result['no-caption'] = False
result['no-city'] = False
if 'q' in q:
result['no-caption'] = True
if 'Q' in q:
result['no-city'] = True
if 'F' in q:
result['no-follow-line'] = True
for key, val in args.items():
if val == 'True':
val = True
if val == 'False':
val = False
result[key] = val
return result