Weer: BBQ cijfer en (non)verbose
This commit is contained in:
+69
-22
@@ -447,7 +447,7 @@ class Shitpost(object):
|
||||
|
||||
@commands.command(pass_context=True)
|
||||
@asyncio.coroutine
|
||||
def weer(self, ctx, location="Leiden"):
|
||||
def weer(self, ctx, location="Leiden", verbose="False"):
|
||||
"""Vertelt je het weer.
|
||||
Omdat je te lui bent om naar buiten te kijken.
|
||||
Oant Moarn!
|
||||
@@ -469,6 +469,10 @@ class Shitpost(object):
|
||||
}
|
||||
if(location == ""):
|
||||
location = "Leiden"
|
||||
if(str(verbose).lower() == "false"):
|
||||
v = False
|
||||
else:
|
||||
v = True
|
||||
|
||||
url = "http://weerlive.nl/api/json-10min.php?locatie=" + location
|
||||
response = requests.get(url)
|
||||
@@ -478,34 +482,46 @@ class Shitpost(object):
|
||||
wData = json.loads(response.content.decode('utf-8'))
|
||||
message = ""
|
||||
|
||||
if (wData["liveweer"][0]["alarm"] == "1"):
|
||||
message += "\n\n" + "HOLY SHIT :scream: ER IS EEN WEERALARM!!!1!: "
|
||||
message += wData["liveweer"][0]["alarmtxt"] + ". Hide yo kids, hide yo wife! \n\n"
|
||||
# Weather alert:
|
||||
alertCode, alertMessage = self.getWeerAlarm(wData["liveweer"][0])
|
||||
if (v and alertCode != None):
|
||||
message += alertMessage + "\n\n"
|
||||
elif (not v and alertCode != None):
|
||||
if (alertCode == "rood"):
|
||||
message += alertMessage + "\n\n"
|
||||
else:
|
||||
message += ":warning: Er is een weeralarm van kracht. Code " + alertCode + ".\n\n"
|
||||
|
||||
# Today:
|
||||
message += weatherIconTranslation[ 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"]
|
||||
|
||||
message += "\n\nMorgen: " + weatherIconTranslation[ wData["liveweer"][0]["d1weer"] ]
|
||||
message += " " + wData["liveweer"][0]["d1tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d1tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d1neerslag"] == "0"):
|
||||
message += "Geen neerslag. "
|
||||
else:
|
||||
message += "Kans op neerslag: " + wData["liveweer"][0]["d1neerslag"] + "%. "
|
||||
if (int(wData["liveweer"][0]["d1windk"]) > 5):
|
||||
message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it."
|
||||
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 += " " + wData["liveweer"][0]["d1tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d1tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d1neerslag"] == "0"):
|
||||
message += "Geen neerslag. "
|
||||
else:
|
||||
message += "Kans op neerslag: " + wData["liveweer"][0]["d1neerslag"] + "%. "
|
||||
if (int(wData["liveweer"][0]["d1windk"]) > 5):
|
||||
message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it."
|
||||
|
||||
message += "\n\nOvermorgen: "+ weatherIconTranslation[ wData["liveweer"][0]["d2weer"] ]
|
||||
message += " " + wData["liveweer"][0]["d2tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d2tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d2neerslag"] == "0"):
|
||||
message += "Geen neerslag. "
|
||||
else:
|
||||
message += "Kans op neerslag: " + wData["liveweer"][0]["d2neerslag"] + "%. "
|
||||
if (int(wData["liveweer"][0]["d2windk"]) > 5):
|
||||
message += "Windkracht " + wData["liveweer"][0]["d2windk"] + ". "
|
||||
message += "\n\nOvermorgen: "+ weatherIconTranslation[ wData["liveweer"][0]["d2weer"] ]
|
||||
message += " " + wData["liveweer"][0]["d2tmin"] + " tot "
|
||||
message += wData["liveweer"][0]["d2tmax"] + " graden. "
|
||||
if (wData["liveweer"][0]["d2neerslag"] == "0"):
|
||||
message += "Geen neerslag. "
|
||||
else:
|
||||
message += "Kans op neerslag: " + wData["liveweer"][0]["d2neerslag"] + "%. "
|
||||
if (int(wData["liveweer"][0]["d2windk"]) > 5):
|
||||
message += "Windkracht " + wData["liveweer"][0]["d2windk"] + ". "
|
||||
|
||||
bbqGrade = self.getBbqGrade(wData["liveweer"][0])
|
||||
message += "\n\nHet BBQ cijfer voor vandaag is: " + '{0:g}'.format(round(bbqGrade, 1))
|
||||
|
||||
message += "\n\nOant Moarn!"
|
||||
|
||||
@@ -513,6 +529,37 @@ class Shitpost(object):
|
||||
else:
|
||||
print("API ERROR. :robot:")
|
||||
|
||||
#returns which the current weatheralert code and returns a message
|
||||
def getWeerAlarm(self, weatherObj):
|
||||
if (weatherObj["alarm"] != "1"):
|
||||
return None, ""
|
||||
if ("code rood" in weatherObj["alarmtxt"].lower()):
|
||||
return "rood", "HOLY SHIT :scream: HET IS :red_circle:CODE ROOD:red_circle:!! " + weatherObj["alarmtxt"] + ". Hide yo kids, hide yo wife!"
|
||||
if ("code oranje" in weatherObj["alarmtxt"].lower()):
|
||||
return "oranje", "PAS OP! :large_orange_diamond: Code Oranje :large_orange_diamond: is van kracht! :willy: " + weatherObj["alarmtxt"]
|
||||
return "geel", ":warning: Kennelijk is er een weeralarm: " + weatherObj["alarmtxt"]
|
||||
|
||||
#determines a BBQ grade based on the current weather
|
||||
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)
|
||||
|
||||
#remove up to 5.0 points for rain/snow:
|
||||
grade -= float(weatherObj["d0neerslag"]) / 20
|
||||
#remove points for very hot weather: (above 30)
|
||||
grade -= max(0, (float(weatherObj["d0tmax"]) - 30.0)/3 )
|
||||
except:
|
||||
return -1.0
|
||||
|
||||
return max(1.0, min(10.0, grade))
|
||||
|
||||
|
||||
@commands.command(pass_context=True)
|
||||
@asyncio.coroutine
|
||||
def watspelenwe(self, ctx):
|
||||
|
||||
Reference in New Issue
Block a user