diff --git a/lib/parse_query.py b/lib/parse_query.py index b8376c4..f086c01 100644 --- a/lib/parse_query.py +++ b/lib/parse_query.py @@ -69,8 +69,6 @@ def parse_query(args): 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: @@ -83,7 +81,8 @@ def parse_query(args): val = True if val == 'False': val = False - result[key] = val + if val: + result[key] = val # currently `view` is alias for `format` if "format" in result and not result.get("view"): diff --git a/lib/view/moon.py b/lib/view/moon.py index 2aa5da4..a4d8255 100644 --- a/lib/view/moon.py +++ b/lib/view/moon.py @@ -10,15 +10,12 @@ import constants import parse_query import globals -def get_moon(query, parsed_query): +def get_moon(parsed_query): location = parsed_query['orig_location'] html = parsed_query['html_output'] lang = parsed_query['lang'] - if query is None: - query = {} - date = None if '@' in location: date = location[location.index('@')+1:] @@ -40,7 +37,7 @@ def get_moon(query, parsed_query): stdout = p.communicate()[0] stdout = stdout.decode("utf-8") - if query.get('no-terminal', False): + if parsed_query.get('no-terminal', False): stdout = globals.remove_ansi(stdout) if html: diff --git a/lib/view/wttr.py b/lib/view/wttr.py index ccd57a0..4007776 100644 --- a/lib/view/wttr.py +++ b/lib/view/wttr.py @@ -12,6 +12,7 @@ import sys import os import re import time +import hashlib sys.path.insert(0, "..") from translations import get_message, FULL_TRANSLATION, PARTIAL_TRANSLATION, SUPPORTED_LANGS @@ -23,7 +24,7 @@ def _is_invalid_location(location): if '.png' in location: return True -def get_wetter(query, parsed_query): +def get_wetter(parsed_query): location = parsed_query['location'] ip = parsed_query['ip_addr'] @@ -83,7 +84,10 @@ def get_wetter(query, parsed_query): if location_name is None: location_name = "" - return "%s/%s/%s%s%s%s%s" % (CACHEDIR, location, timestamp, imperial_suffix, lang_suffix, query_line, location_name) + + filename = "".join([timestamp, imperial_suffix, lang_suffix, query_line, location_name]) + digest = hashlib.sha1(filename.encode('utf-8')).hexdigest() + return "%s/%s/%s" % (CACHEDIR, location, digest) def save_weather_data(location, filename, lang=None, query=None, location_name=None, full_address=None): @@ -212,9 +216,9 @@ def get_wetter(query, parsed_query): stdout = re.sub("", "" + title + opengraph, stdout) open(filename+'.html', 'w').write(stdout) - filename = get_filename(location, lang=lang, query=query, location_name=location_name) + filename = get_filename(location, lang=lang, query=parsed_query, location_name=location_name) if not os.path.exists(filename): - save_weather_data(location, filename, lang=lang, query=query, location_name=location_name, full_address=full_address) + save_weather_data(location, filename, lang=lang, query=parsed_query, location_name=location_name, full_address=full_address) if html: filename += '.html' diff --git a/lib/wttr_srv.py b/lib/wttr_srv.py index 62541ad..c5c5825 100644 --- a/lib/wttr_srv.py +++ b/lib/wttr_srv.py @@ -205,9 +205,9 @@ def _response(parsed_query, query, fast_mode=False): if parsed_query.get("view"): output = wttr_line(query, parsed_query) elif loc == 'moon' or loc.startswith('moon@'): - output = get_moon(query, parsed_query) + output = get_moon(parsed_query) else: - output = get_wetter(query, parsed_query) + output = get_wetter(parsed_query) if parsed_query.get('png_filename'): output = fmt.png.render_ansi( @@ -291,6 +291,7 @@ def parse_request(location, request, query, fast_mode=False): 'country': country, 'query_source_location': query_source_location}) + parsed_query.update(query) return parsed_query @@ -338,7 +339,6 @@ def wttr(location, request): # use the full track parsed_query = parse_request(location, request, query, fast_mode=True) response = _response(parsed_query, query, fast_mode=True) - try: if not response: parsed_query = parse_request(location, request, query)