|
|
|
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 '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
|
|
|
|
|