Weather fixes.
- BBQ grade is less pessimistic. - Fix for unknown weather icons.
This commit is contained in:
+28
-22
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user