Refactor weer
Omwille van het zo beter te kunnen maken om voor te kunnen testen.
This commit is contained in:
+49
-49
@@ -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, ""
|
||||
|
||||
Reference in New Issue
Block a user