import locale from datetime import datetime, timedelta from random import choice import requests # Morgiges Datum für API-Abfrage und der Name des Wochentags in Deutsch # Sprache auf Deutsch setzen, für die Namen der Wochentage locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') # Einen Tag auf das heutige Datum addieren utcMorgen = datetime.today()+timedelta(days=1) # Das Datum im Format für die Open-Data-API, z.B. 2022-07-13 morgen = utcMorgen.strftime('%Y-%m-%d') # Der Wochentagname von morgen morgenWochentag = utcMorgen.strftime('%A') # Gimmick: Eine Liste mit Sätzen # für die Einleitung der Abfallkalender-Ausgabe introSaetze = [ 'Leute, denkt morgen an die Müllabfuhr: ', 'Morgen ist '+ morgenWochentag+', für die Müllabfuhr in Würzburg heißt das: ', 'Der Abfallkalender für morgen, '+ morgenWochentag+': ', 'Wer ist am '+ morgenWochentag+' beim Müll mit was dran?' ] # Variablen initialisieren ausgabe = '' stadtteil={} stadtteilListe = set # Daten für morgen vom Open-Data-Portal holen und in JSON umwandeln # Siehe https://opendata.wuerzburg.de/explore/dataset/abfallkalender-wuerzburg/information/ abfallkalenderApiUrl='https://opendata.wuerzburg.de/api/records/1.0/search/?dataset=abfallkalender-wuerzburg&q=start='+morgen+'&rows=99' apiAntwort = requests.get(abfallkalenderApiUrl) abfallkalender = apiAntwort.json() # Gibt es Daten für den morgigen Tag (Samstag und Sonntag nicht) if len(abfallkalender['records']) > 0: # Daten neu struktierien: # Dictionary mit Stadtteilname als Schlüssel und einer Liste der Abfallart, # die morgen dort geholt wird for orte in abfallkalender['records']: try: stadtteil[orte['fields']['stadtteil_name']].append(orte['fields']['kategorie']) except KeyError: stadtteil[orte['fields']['stadtteil_name']]=[] stadtteil[orte['fields']['stadtteil_name']].append(orte['fields']['kategorie']) # Ausgabe zusammenbasteln: for (aktuellerStadtteil,abfallart) in stadtteil.items(): ausgabe += aktuellerStadtteil+': ' # mehr als eine Abfallart? Dann mit Kommans und Und verknüfpfen if len(abfallart)>1: ausgabe+=', '.join(abfallart[:-1])+' und '+abfallart[-1]+"\n" # sonst die eine Abfallart anhängen else: ausgabe+=abfallart[0] # Zufällig einen Einleitungssatz auswählen und der Ausgabe voranstellen. ausgabe=choice(introSaetze)+'\n\n'+ausgabe # Die Ausgabe print (ausgabe) else: print ('Morgen keine Termine im Abfallkalender.')