From 1361d9c0832e2a27d4003fd2c8965ff73ad7b013 Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Mon, 5 Dec 2022 14:51:53 +0100 Subject: [PATCH] Refactor weer Omwille van het zo beter te kunnen maken om voor te kunnen testen. --- Shitpost.py | 128 ++++++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/Shitpost.py b/Shitpost.py index 0ec60b0..fadcc8c 100644 --- a/Shitpost.py +++ b/Shitpost.py @@ -521,76 +521,78 @@ class Shitpost(commands.Cog): returnText += " = __**" + str(total) + "**__" 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) @asyncio.coroutine - def weer(self, ctx, location="Leiden", verbose="False"): + def weer(self, ctx, location="Leiden", verbose=None): """Vertelt je het weer. Omdat je te lui bent om naar buiten te kijken. Oant Moarn! """ - if(location == ""): - location = "Leiden" - if(str(verbose).lower() == "false"): - v = False - else: - v = True - - 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:") + wData = self.get_weer_json(location) + if wData: + message = self.get_weerbericht(wData, verbose) + if not wData or not message: + message = "Weer ophalen niet gelukt. Probeer het later nogmaals.." + yield from ctx.channel.send(message) #returns a nice weather icon. Sometimes the API uses non-documented icons, so we return something else def getWeatherIconTranslation(self, iconKey): @@ -613,10 +615,8 @@ class Shitpost(commands.Cog): 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 def getWeerAlarm(self, weatherObj): if (weatherObj["alarm"] != "1"): return None, ""