32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
# Einheiten: backend/tft/staticdata/fetch.py
|
|
stand: f41ac76b5789
|
|
|
|
## 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
|