Weather fixes.

- BBQ grade is less pessimistic.
- Fix for unknown weather icons.
This commit is contained in:
JP
2020-06-09 22:23:15 +02:00
parent add99665c7
commit fa70bda122
+28 -22
View File
@@ -485,21 +485,6 @@ class Shitpost(object):
Omdat je te lui bent om naar buiten te kijken. Omdat je te lui bent om naar buiten te kijken.
Oant Moarn! 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 == ""): if(location == ""):
location = "Leiden" location = "Leiden"
if(str(verbose).lower() == "false"): if(str(verbose).lower() == "false"):
@@ -526,14 +511,14 @@ class Shitpost(object):
message += ":warning: Er is een weeralarm van kracht. Code " + alertCode + ".\n\n" message += ":warning: Er is een weeralarm van kracht. Code " + alertCode + ".\n\n"
# Today: # Today:
message += weatherIconTranslation[ wData["liveweer"][0]["image"] ] message += self.getWeatherIconTranslation( wData["liveweer"][0]["image"] )
message += " Het is " + wData["liveweer"][0]["temp"] + " graden " message += " Het is " + wData["liveweer"][0]["temp"] + " graden "
message += "en het weer is: " + wData["liveweer"][0]["samenv"] + ". " message += "en het weer is: " + wData["liveweer"][0]["samenv"] + ". "
message += "De verwachting: " + wData["liveweer"][0]["verw"] message += "De verwachting: " + wData["liveweer"][0]["verw"]
if (v): if (v):
# Only print tomorrow, the day after and the BBQ grade if verbose is on: # 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]["d1tmin"] + " tot "
message += wData["liveweer"][0]["d1tmax"] + " graden. " message += wData["liveweer"][0]["d1tmax"] + " graden. "
if (wData["liveweer"][0]["d1neerslag"] == "0"): if (wData["liveweer"][0]["d1neerslag"] == "0"):
@@ -543,7 +528,7 @@ class Shitpost(object):
if (int(wData["liveweer"][0]["d1windk"]) > 5): if (int(wData["liveweer"][0]["d1windk"]) > 5):
message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it." 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]["d2tmin"] + " tot "
message += wData["liveweer"][0]["d2tmax"] + " graden. " message += wData["liveweer"][0]["d2tmax"] + " graden. "
if (wData["liveweer"][0]["d2neerslag"] == "0"): if (wData["liveweer"][0]["d2neerslag"] == "0"):
@@ -561,7 +546,30 @@ class Shitpost(object):
yield from ctx.channel.send(message) yield from ctx.channel.send(message)
else: else:
print("API ERROR. :robot:") 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 #returns which the current weatheralert code and returns a message
def getWeerAlarm(self, weatherObj): def getWeerAlarm(self, weatherObj):
if (weatherObj["alarm"] != "1"): if (weatherObj["alarm"] != "1"):
@@ -576,12 +584,10 @@ class Shitpost(object):
def getBbqGrade(self, weatherObj): def getBbqGrade(self, weatherObj):
grade = 1.0 grade = 1.0
try: try:
averageTemp = (float(weatherObj["d0tmin"]) + float(weatherObj["d0tmax"])) / 2
#add up to 4.0 points for sun: #add up to 4.0 points for sun:
grade += float(weatherObj["d0zon"]) / 25 grade += float(weatherObj["d0zon"]) / 25
#add up to 5.0 points for temperature: #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: #remove up to 5.0 points for rain/snow:
grade -= float(weatherObj["d0neerslag"]) / 20 grade -= float(weatherObj["d0neerslag"]) / 20