Refactor weer

Omwille van het zo beter te kunnen maken om voor te kunnen testen.
This commit is contained in:
2022-12-05 14:51:53 +01:00
parent 1cfd3d0dec
commit 1361d9c083
+64 -64
View File
@@ -522,75 +522,77 @@ class Shitpost(commands.Cog):
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, ""