Updates addressing PR comments

Added location_info() to util/location API to return a dict of all location information. Updated modules/contrib/publicip to use that API. Changed modules/contrib/publicip refresh period back to 60 minutes. Changed /util/location API from 'country_name' back to 'name'
This commit is contained in:
Tom Watson 2022-07-06 19:37:29 +07:00
parent 6f137c4927
commit a97a7fe507
2 changed files with 31 additions and 11 deletions

View file

@ -37,7 +37,7 @@ import util.location
class Module(core.module.Module): class Module(core.module.Module):
@core.decorators.every(minutes=5) @core.decorators.every(minutes=60)
def __init__(self, config, theme): def __init__(self, config, theme):
super().__init__(config, theme, core.widget.Widget(self.public_ip)) super().__init__(config, theme, core.widget.Widget(self.public_ip))
@ -48,7 +48,7 @@ class Module(core.module.Module):
self.__country_name = "" # Country name associated with public IP address self.__country_name = "" # Country name associated with public IP address
self.__country_code = "" # Country code associated with public IP address self.__country_code = "" # Country code associated with public IP address
self.__city_name = "" # City name associated with public IP address self.__city_name = "" # City name associated with public IP address
self.__coordinates = "" # Coordinated assoicated with public IP address self.__coordinates = "" # Coordinates assoicated with public IP address
# By default show: <ip> (<2 letter country code>) # By default show: <ip> (<2 letter country code>)
self._format = self.parameter("format", "{ip} ({country_code})") self._format = self.parameter("format", "{ip} ({country_code})")
@ -70,11 +70,13 @@ class Module(core.module.Module):
def update(self): def update(self):
try: try:
self.__ip = util.location.public_ip() __info = util.location.location_info()
self.__country_name = util.location.country_name() self.__ip = __info["public_ip"]
self.__country_code = util.location.country_code() self.__country_name = __info["country"]
self.__city_name = util.location.city_name() self.__country_code = __info["country_code"]
__lat, __lon = util.location.coordinates() self.__city_name = __info["city_name"]
__lat = __info["latitude"]
__lon = __info["longitude"]
__lat = "{:.2f}".format(__lat) __lat = "{:.2f}".format(__lat)
__lon = "{:.2f}".format(__lon) __lon = "{:.2f}".format(__lon)
__output = __lat + "°N" + "," + " " + __lon + "°E" __output = __lat + "°N" + "," + " " + __lon + "°E"

View file

@ -50,7 +50,7 @@ __sources = [
"city": "city_name", "city": "city_name",
"query": "public_ip", "query": "public_ip",
}, },
} },
] ]
@ -87,8 +87,7 @@ def __get(name):
def reset(): def reset():
"""Resets the location library, ensuring that a new query will be started """Resets the location library, ensuring that a new query will be started"""
"""
global __next global __next
__next = 0 __next = 0
@ -102,7 +101,7 @@ def coordinates():
return __get("latitude"), __get("longitude") return __get("latitude"), __get("longitude")
def country_name(): def country():
"""Returns the current country name """Returns the current country name
:return: country name :return: country name
@ -110,6 +109,7 @@ def country_name():
""" """
return __get("country_name") return __get("country_name")
def country_code(): def country_code():
"""Returns the current country code """Returns the current country code
@ -118,6 +118,7 @@ def country_code():
""" """
return __get("country_code") return __get("country_code")
def city_name(): def city_name():
"""Returns the current city name """Returns the current city name
@ -126,6 +127,7 @@ def city_name():
""" """
return __get("city_name") return __get("city_name")
def public_ip(): def public_ip():
"""Returns the current public IP """Returns the current public IP
@ -135,4 +137,20 @@ def public_ip():
return __get("public_ip") return __get("public_ip")
def location_info():
"""Returns the current location information
:return: public IP, country name, country code, city name & coordinates
:rtype: dictionary
"""
return {
"public_ip": __get("public_ip"),
"country": __get("country_name"),
"country_code": __get("country_code"),
"city_name": __get("city_name"),
"latitude": __get("latitude"),
"longitude": __get("longitude"),
}
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4