Files
tft/.planer/einheiten/backend__tft__staticdata__fetch.py.md
2026-07-24 11:24:24 +02:00

2.1 KiB

Einheiten: backend/tft/staticdata/fetch.py

stand: f41ac76b57

backend/tft/staticdata/fetch.py::fetch_static

beschreibung: Lädt TFT-Rohdaten von Community Dragon, parst sie und schreibt sie zusammen mit Metadaten versioniert auf die Festplatte. input: optionale set_override-ID, sonst aktuelle Set-Auswahl der Quelldaten output: das geparste TFT-Statikdaten-Dictionary (zugleich als versionierte JSON-Dateien inklusive Pointer-Datei persistiert) entscheidungen:

  • Patch wird aus dem Content-Metadata-Endpoint auf die ersten zwei Versionssegmente reduziert. beleg: "patch = ".".join(version.split(".")[:2])"
  • Rohdaten werden unverändert zusätzlich als raw.json archiviert. beleg: "(out_dir / "raw.json").write_text(json.dumps(raw))"
  • Geschriebene Domänen-Dateien werden mit eingerücktem, nicht-ASCII-escapiertem JSON serialisiert. beleg: "json.dumps(parsed[name], indent=1, ensure_ascii=False)"
  • Nach erfolgreichem Schreiben wird ein latest_static_pointer aktualisiert, damit Aufrufer das aktuelle Verzeichnis finden. beleg: "paths.latest_static_pointer().write_text(json.dumps(pointer, indent=1))" kanten:

backend/tft/staticdata/fetch.py::load_static

beschreibung: Lädt den zuletzt von fetch_static geschriebenen Satz normalisierter TFT-Statikdaten über den Pointer wieder ein. input: nichts; liest selbstständig den Pointer-Pfad aus tft.paths output: ein Dictionary mit den Schlüsseln units, traits, items, augments und meta aus dem zuletzt gespeicherten Statikdaten-Verzeichnis entscheidungen:

  • Das Zielverzeichnis wird über paths.latest_static_pointer() und nicht über einen Aufrufparameter bestimmt. beleg: "pointer = json.loads(paths.latest_static_pointer().read_text())"
  • Der pathlib-Import erfolgt erst innerhalb der Funktion, um den Modulimport schlank zu halten. beleg: "from pathlib import Path"
  • Beim Laden werden ausschließlich die fünf bekannten Domänen-Schlüssel zusammengeführt, unbekannte Einträge ignoriert. beleg: "for name in ("units", "traits", "items", "augments", "meta")" kanten:
  • wird-genutzt-von: backend/tft/staticdata/fetch.py::fetch_static