diff --git a/lib/location.py b/lib/location.py index ccc67ba..22a0e88 100644 --- a/lib/location.py +++ b/lib/location.py @@ -207,11 +207,11 @@ def location_processing(location, ip_addr): if location == '~': location = None - if location and location.lstrip('~').startswith('@'): + if location and location.lstrip('~ ').startswith('@'): try: location, country = get_location( socket.gethostbyname( - location.lstrip('~')[1:])) + location.lstrip('~ ')[1:])) location = '~' + location if country: location += ", %s" % country @@ -243,13 +243,16 @@ def location_processing(location, ip_addr): hide_full_address = not force_show_full_address if location and not location.startswith('~'): - location = location_canonical_name(location) + tmp_location = location_canonical_name(location) + if tmp_location != location: + override_location_name = location + locaiton = tmp_location # up to this point it is possible that the name # contains some unicode symbols # here we resolve them if location is not None and not ascii_only(location): - location = "~" + location.lstrip('~') + location = "~" + location.lstrip('~ ') if location is not None and location.upper() in IATA_CODES: location = '~%s' % location diff --git a/lib/wttr_line.py b/lib/wttr_line.py index 0c1ba2d..f364ae6 100644 --- a/lib/wttr_line.py +++ b/lib/wttr_line.py @@ -93,7 +93,7 @@ def render_location(data, query): location (l) """ - return data['location'].title() + return (data['override_location'] or data['location']) # .title() def render_moonphase(_, query): """ @@ -155,7 +155,7 @@ def render_line(line, data, query): return re.sub(r'%[^%]*[a-zA-Z]', render_symbol, line) -def format_weather_data(format_line, location, data, query): +def format_weather_data(format_line, location, override_location, data, query): """ Format information about current weather `data` for `location` with specified in `format_line` format @@ -163,10 +163,11 @@ def format_weather_data(format_line, location, data, query): current_condition = data['data']['current_condition'][0] current_condition['location'] = location + current_condition['override_location'] = override_location output = render_line(format_line, current_condition, query) return output -def wttr_line(location, query): +def wttr_line(location, override_location_name, query): """ Return 1line weather information for `location` in format `line_format` @@ -179,7 +180,7 @@ def wttr_line(location, query): weather_data = get_weather_data(location) - output = format_weather_data(format_line, location, weather_data, query) + output = format_weather_data(format_line, location, override_location_name, weather_data, query) output = output.rstrip("\n")+"\n" return output @@ -193,7 +194,7 @@ def main(): 'line': sys.argv[2], } - sys.stdout.write(wttr_line(location, query)) + sys.stdout.write(wttr_line(location, location, query)) if __name__ == '__main__': main() diff --git a/lib/wttr_srv.py b/lib/wttr_srv.py index 58ff557..340ce96 100644 --- a/lib/wttr_srv.py +++ b/lib/wttr_srv.py @@ -208,8 +208,7 @@ def wttr(location, request): # We are ready to return the answer try: if 'format' in query: - location = (orig_location or location).lstrip('~') - return wttr_line(location, query) + return wttr_line(location, override_location_name, query) if png_filename: options = {