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
+49 -49
View File
@@ -522,75 +522,77 @@ class Shitpost(commands.Cog):
yield from ctx.channel.send(returnText)
@commands.command(pass_context=True)
@asyncio.coroutine
def weer(self, ctx, location="Leiden", verbose="False"):
"""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'))
def get_weerbericht(self, wData, verbose=None):
if not wData:
return None
message = ""
# Weather alert:
alertCode, alertMessage = self.getWeerAlarm(wData["liveweer"][0])
if (v and alertCode != None):
alertCode, alertMessage = self.getWeerAlarm(wData)
if (verbose and alertCode):
message += alertMessage + "\n\n"
elif (not v and alertCode != None):
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["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 += self.getWeatherIconTranslation( wData["image"] )
message += " Het is " + wData["temp"] + " graden "
message += "en het weer is: " + wData["samenv"] + ". "
message += "De verwachting: " + wData["verw"]
if (v):
if (verbose):
# 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 += "\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["liveweer"][0]["d1neerslag"] + "%. "
if (int(wData["liveweer"][0]["d1windk"]) > 5):
message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it."
message += "Kans op neerslag: " + wData["d1neerslag"] + "%. "
if (int(wData["d1windk"]) > 5):
message += "Windkracht " + wData["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 += "\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["liveweer"][0]["d2neerslag"] + "%. "
if (int(wData["liveweer"][0]["d2windk"]) > 5):
message += "Windkracht " + wData["liveweer"][0]["d2windk"] + ". "
message += "Kans op neerslag: " + wData["d2neerslag"] + "%. "
if (int(wData["d2windk"]) > 5):
message += "Windkracht " + wData["d2windk"] + ". "
bbqGrade = self.getBbqGrade(wData["liveweer"][0])
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=None):
"""Vertelt je het weer.
Omdat je te lui bent om naar buiten te kijken.
Oant Moarn!
"""
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)
else:
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):
@@ -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, ""