2.1 KiB
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.jsonarchiviert. 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_pointeraktualisiert, 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