Meilenstein 1: Termin und API
Mission
Variante A: Terminplaner + „heute“-Report
Variante B: API-Todos laden + mit heutigem Datum im Report speichern
Anforderungen
- pathlib für Dateien
- datetime für Zeitstempel
- entweder Termine oder API-Daten (besser beides leicht)
- Fehlerbehandlung
- klare Report-Ausgabe
- optional logging
Beispiellösung (Kombi leicht)
Lösung anzeigen
import json
import logging
from datetime import datetime
from pathlib import Path
from urllib.request import urlopen, Request
from urllib.error import URLError, HTTPError
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
OUT = Path("report.txt")
def lade_todos(limit: int = 5) -> list[dict]:
url = f"https://jsonplaceholder.typicode.com/todos?_limit={limit}"
try:
req = Request(url, headers={"User-Agent": "CodeClub/1.0"})
with urlopen(req, timeout=10) as response:
return json.loads(response.read().decode("utf-8"))
except (URLError, HTTPError, TimeoutError, json.JSONDecodeError) as e:
logging.error("API fehlgeschlagen: %s", e)
return []
todos = lade_todos()
jetzt = datetime.now().strftime("%d.%m.%Y %H:%M")
zeilen = [f"Report vom {jetzt}", f"Todos geladen: {len(todos)}", ""]
for t in todos:
mark = "x" if t.get("completed") else " "
zeilen.append(f"[{mark}] {t.get('title', '?')}")
OUT.write_text("\n".join(zeilen) + "\n", encoding="utf-8")
logging.info("Report geschrieben nach %s", OUT)
print(OUT.read_text(encoding="utf-8"))