Zum Hauptinhalt springen

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"))