mirror of
https://github.com/chubin/wttr.in
synced 2025-01-12 20:18:46 +00:00
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
|
"""
|
||
|
Rendering weather data in the Prometheus format.
|
||
|
|
||
|
"""
|
||
|
|
||
|
EXPORTED_FIELDS = [
|
||
|
"FeelsLikeC", "FeelsLikeF", "cloudcover", "humidity",
|
||
|
"precipMM", "pressure", "temp_C", "temp_F", "uvIndex",
|
||
|
"visibility", "winddirDegree", "windspeedKmph",
|
||
|
"windspeedMiles",
|
||
|
]
|
||
|
|
||
|
def _render_current(data):
|
||
|
|
||
|
output = []
|
||
|
current_condition = data["current_condition"][0]
|
||
|
for field in EXPORTED_FIELDS:
|
||
|
try:
|
||
|
output.append("%s(forecast=\"0h\") %s" % (field, current_condition[field]))
|
||
|
except IndexError:
|
||
|
pass
|
||
|
|
||
|
try:
|
||
|
weather_desc = current_condition["weatherDesc"][0]["value"]
|
||
|
output.append("weatherDesc{forecast=\"0h\", description=\"%s\"} 1" % weather_desc)
|
||
|
except IndexError:
|
||
|
pass
|
||
|
|
||
|
try:
|
||
|
winddir16point = current_condition["winddir16Point"]
|
||
|
output.append("winddir16Point{forecast=\"0h\", description=\"%s\"} 1" % winddir16point)
|
||
|
except IndexError:
|
||
|
pass
|
||
|
|
||
|
return "\n".join(output)+"\n"
|
||
|
|
||
|
def render_prometheus(data):
|
||
|
"""
|
||
|
Convert `data` into Prometheus format
|
||
|
and return it as sting.
|
||
|
"""
|
||
|
|
||
|
return _render_current(data)
|