Weather fixes.
- BBQ grade is less pessimistic. - Fix for unknown weather icons.
This commit is contained in:
+27
-21
@@ -485,21 +485,6 @@ class Shitpost(object):
|
||||
Omdat je te lui bent om naar buiten te kijken.
|
||||
Oant Moarn!
|
||||
"""
|
||||
weatherIconTranslation = {
|
||||
"zonnig" : ":sun_with_face:",
|
||||
"bliksem" : ":cloud_lightning:",
|
||||
"regen" : ":cloud_rain:",
|
||||
"buien" : ":umbrella:",
|
||||
"hagel" : ":cloud_snow:",
|
||||
"mist" : ":white_large_square:",
|
||||
"sneeuw" : ":cloud_snow:",
|
||||
"bewolkt" : ":white_sun_cloud:",
|
||||
"halfbewolkt" : ":partly_sunny:",
|
||||
"zwaarbewolkt" : ":cloud:",
|
||||
"nachtmist" : ":ghost:",
|
||||
"helderenacht" : ":first_quarter_moon_with_face:",
|
||||
"wolkennacht" : ":cloud:"
|
||||
}
|
||||
if(location == ""):
|
||||
location = "Leiden"
|
||||
if(str(verbose).lower() == "false"):
|
||||
@@ -526,14 +511,14 @@ class Shitpost(object):
|
||||
message += ":warning: Er is een weeralarm van kracht. Code " + alertCode + ".\n\n"
|
||||
|
||||
# Today:
|
||||
message += weatherIconTranslation[ wData["liveweer"][0]["image"] ]
|
||||
message += self.getWeatherIconTranslation( wData["liveweer"][0]["image"] )
|
||||
message += " Het is " + wData["liveweer"][0]["temp"] + " graden "
|
||||
message += "en het weer is: " + wData["liveweer"][0]["samenv"] + ". "
|
||||
message += "De verwachting: " + wData["liveweer"][0]["verw"]
|
||||
|
||||
if (v):
|
||||
# Only print tomorrow, the day after and the BBQ grade if verbose is on:
|
||||
message += "\n\nMorgen: " + weatherIconTranslation[ wData["liveweer"][0]["d1weer"] ]
|
||||
message += "\n\nMorgen: " + self.getWeatherIconTranslation( wData["liveweer"][0]["d1weer"] )
|
||||
message += " " + wData["liveweer"][0]["d1tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d1tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d1neerslag"] == "0"):
|
||||
@@ -543,7 +528,7 @@ class Shitpost(object):
|
||||
if (int(wData["liveweer"][0]["d1windk"]) > 5):
|
||||
message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it."
|
||||
|
||||
message += "\n\nOvermorgen: "+ weatherIconTranslation[ wData["liveweer"][0]["d2weer"] ]
|
||||
message += "\n\nOvermorgen: "+ self.getWeatherIconTranslation( wData["liveweer"][0]["d2weer"] )
|
||||
message += " " + wData["liveweer"][0]["d2tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d2tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d2neerslag"] == "0"):
|
||||
@@ -562,6 +547,29 @@ class Shitpost(object):
|
||||
else:
|
||||
print("API ERROR. :robot:")
|
||||
|
||||
#returns a nice weather icon. Sometimes the API uses non-documented icons, so we return something else
|
||||
def getWeatherIconTranslation(self, iconKey):
|
||||
WEATHER_ICONS = {
|
||||
"zonnig" : ":sun_with_face:",
|
||||
"bliksem" : ":cloud_lightning:",
|
||||
"regen" : ":cloud_rain:",
|
||||
"buien" : ":umbrella:",
|
||||
"hagel" : ":cloud_snow:",
|
||||
"mist" : ":white_large_square:",
|
||||
"sneeuw" : ":cloud_snow:",
|
||||
"bewolkt" : ":white_sun_cloud:",
|
||||
"halfbewolkt" : ":partly_sunny:",
|
||||
"zwaarbewolkt" : ":cloud:",
|
||||
"nachtmist" : ":ghost:",
|
||||
"helderenacht" : ":first_quarter_moon_with_face:",
|
||||
"wolkennacht" : ":cloud:"
|
||||
}
|
||||
try:
|
||||
return WEATHER_ICONS[iconKey]
|
||||
except KeyError:
|
||||
print("WARN Unknown iconKey:", str(iconKey))
|
||||
return ":park:"
|
||||
|
||||
#returns which the current weatheralert code and returns a message
|
||||
def getWeerAlarm(self, weatherObj):
|
||||
if (weatherObj["alarm"] != "1"):
|
||||
@@ -576,12 +584,10 @@ class Shitpost(object):
|
||||
def getBbqGrade(self, weatherObj):
|
||||
grade = 1.0
|
||||
try:
|
||||
averageTemp = (float(weatherObj["d0tmin"]) + float(weatherObj["d0tmax"])) / 2
|
||||
|
||||
#add up to 4.0 points for sun:
|
||||
grade += float(weatherObj["d0zon"]) / 25
|
||||
#add up to 5.0 points for temperature:
|
||||
grade += min(5.0, averageTemp*averageTemp/125)
|
||||
grade += min(5.0, float(weatherObj["d0tmax"])*float(weatherObj["d0tmax"])/130)
|
||||
|
||||
#remove up to 5.0 points for rain/snow:
|
||||
grade -= float(weatherObj["d0neerslag"]) / 20
|
||||
|
||||
Reference in New Issue
Block a user