Refactor weer
Omwille van het zo beter te kunnen maken om voor te kunnen testen.
This commit is contained in:
+64
-64
@@ -521,76 +521,78 @@ class Shitpost(commands.Cog):
|
|||||||
returnText += " = __**" + str(total) + "**__"
|
returnText += " = __**" + str(total) + "**__"
|
||||||
|
|
||||||
yield from ctx.channel.send(returnText)
|
yield from ctx.channel.send(returnText)
|
||||||
|
|
||||||
|
def get_weerbericht(self, wData, verbose=None):
|
||||||
|
if not wData:
|
||||||
|
return None
|
||||||
|
message = ""
|
||||||
|
# Weather alert:
|
||||||
|
alertCode, alertMessage = self.getWeerAlarm(wData)
|
||||||
|
if (verbose and alertCode):
|
||||||
|
message += alertMessage + "\n\n"
|
||||||
|
elif (not verbose and alertCode):
|
||||||
|
if (alertCode == "rood"):
|
||||||
|
message += alertMessage + "\n\n"
|
||||||
|
else:
|
||||||
|
message += ":warning: Er is een weeralarm van kracht. Code " + alertCode + ".\n\n"
|
||||||
|
|
||||||
|
# Today:
|
||||||
|
message += self.getWeatherIconTranslation( wData["image"] )
|
||||||
|
message += " Het is " + wData["temp"] + " graden "
|
||||||
|
message += "en het weer is: " + wData["samenv"] + ". "
|
||||||
|
message += "De verwachting: " + wData["verw"]
|
||||||
|
|
||||||
|
if (verbose):
|
||||||
|
# Only print tomorrow, the day after and the BBQ grade if verbose is on:
|
||||||
|
message += "\n\nMorgen: " + self.getWeatherIconTranslation( wData["d1weer"] )
|
||||||
|
message += " " + wData["d1tmin"] + " tot "
|
||||||
|
message += wData["d1tmax"] + " graden. "
|
||||||
|
if (wData["d1neerslag"] == "0"):
|
||||||
|
message += "Geen neerslag. "
|
||||||
|
else:
|
||||||
|
message += "Kans op neerslag: " + wData["d1neerslag"] + "%. "
|
||||||
|
if (int(wData["d1windk"]) > 5):
|
||||||
|
message += "Windkracht " + wData["d1windk"] + ". Blow it."
|
||||||
|
|
||||||
|
message += "\n\nOvermorgen: "+ self.getWeatherIconTranslation( wData["d2weer"] )
|
||||||
|
message += " " + wData["d2tmin"] + " tot "
|
||||||
|
message += wData["d2tmax"] + " graden. "
|
||||||
|
if (wData["d2neerslag"] == "0"):
|
||||||
|
message += "Geen neerslag. "
|
||||||
|
else:
|
||||||
|
message += "Kans op neerslag: " + wData["d2neerslag"] + "%. "
|
||||||
|
if (int(wData["d2windk"]) > 5):
|
||||||
|
message += "Windkracht " + wData["d2windk"] + ". "
|
||||||
|
|
||||||
|
bbqGrade = self.getBbqGrade(wData)
|
||||||
|
message += "\n\nHet BBQ cijfer voor vandaag is: " + '{0:g}'.format(round(bbqGrade, 1))
|
||||||
|
|
||||||
|
message += "\n\nOant Moarn!"
|
||||||
|
return message
|
||||||
|
|
||||||
|
|
||||||
|
def get_weer_json(self, location=None):
|
||||||
|
if not location:
|
||||||
|
location = "Leiden"
|
||||||
|
url = f"http://weerlive.nl/api/json-data-10min.php?key={os.getenv('STROOP_WEERLIVE')}&locatie={location}"
|
||||||
|
response = requests.get(url)
|
||||||
|
if response:
|
||||||
|
return json.loads(response.content.decode('utf-8'))["liveweer"][0]
|
||||||
|
return None
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def weer(self, ctx, location="Leiden", verbose="False"):
|
def weer(self, ctx, location="Leiden", verbose=None):
|
||||||
"""Vertelt je het weer.
|
"""Vertelt je het weer.
|
||||||
Omdat je te lui bent om naar buiten te kijken.
|
Omdat je te lui bent om naar buiten te kijken.
|
||||||
Oant Moarn!
|
Oant Moarn!
|
||||||
"""
|
"""
|
||||||
if(location == ""):
|
wData = self.get_weer_json(location)
|
||||||
location = "Leiden"
|
if wData:
|
||||||
if(str(verbose).lower() == "false"):
|
message = self.get_weerbericht(wData, verbose)
|
||||||
v = False
|
if not wData or not message:
|
||||||
else:
|
message = "Weer ophalen niet gelukt. Probeer het later nogmaals.."
|
||||||
v = True
|
yield from ctx.channel.send(message)
|
||||||
|
|
||||||
url = f"http://weerlive.nl/api/json-data-10min.php?key={os.getenv('STROOP_WEERLIVE')}&locatie={location}"
|
|
||||||
response = requests.get(url)
|
|
||||||
#Oant Moarn
|
|
||||||
|
|
||||||
if (response.ok):
|
|
||||||
wData = json.loads(response.content.decode('utf-8'))
|
|
||||||
message = ""
|
|
||||||
|
|
||||||
# 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 += 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: " + self.getWeatherIconTranslation( 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: "+ self.getWeatherIconTranslation( 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!"
|
|
||||||
|
|
||||||
yield from ctx.channel.send(message)
|
|
||||||
else:
|
|
||||||
print("API ERROR. :robot:")
|
|
||||||
|
|
||||||
#returns a nice weather icon. Sometimes the API uses non-documented icons, so we return something else
|
#returns a nice weather icon. Sometimes the API uses non-documented icons, so we return something else
|
||||||
def getWeatherIconTranslation(self, iconKey):
|
def getWeatherIconTranslation(self, iconKey):
|
||||||
@@ -613,10 +615,8 @@ class Shitpost(commands.Cog):
|
|||||||
try:
|
try:
|
||||||
return WEATHER_ICONS[iconKey]
|
return WEATHER_ICONS[iconKey]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print("WARN Unknown iconKey:", str(iconKey))
|
|
||||||
return ":park:"
|
return ":park:"
|
||||||
|
|
||||||
#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"):
|
||||||
return None, ""
|
return None, ""
|
||||||
|
|||||||
Reference in New Issue
Block a user