Deutschland: Karte erst bereit wenn beide Länder geladen, alte Schweizer Daten übernehmen, Hardware-Hinweise
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X48pE4bzjHej8w9HyZXCjb
This commit is contained in:
@@ -329,8 +329,13 @@ def main() -> None:
|
||||
ap.error("--zip braucht --source")
|
||||
|
||||
C.FEEDS_DIR.mkdir(parents=True, exist_ok=True)
|
||||
for p in C.FEEDS_DIR.iterdir(): # Ordner der alten Version (feeds/<version>) und abgeschaltete Quellen
|
||||
if p.is_dir() and p.name not in C.SOURCES:
|
||||
for p in C.FEEDS_DIR.iterdir():
|
||||
if not p.is_dir() or p.name in C.SOURCES:
|
||||
continue
|
||||
if p.name.isdigit() and (p / "meta.json").exists(): # alte Version: feeds/<version> war die Schweiz
|
||||
(C.FEEDS_DIR / "ch").mkdir(exist_ok=True)
|
||||
p.rename(C.FEEDS_DIR / "ch" / p.name)
|
||||
else:
|
||||
shutil.rmtree(p)
|
||||
if not args.zip:
|
||||
ensure_tiles()
|
||||
|
||||
@@ -34,6 +34,7 @@ class Source:
|
||||
self.rt_at: float | None = None
|
||||
self.rt_error: str | None = None
|
||||
self.rt_tried_at: float | None = None
|
||||
self.on_disk = False # ein aufbereiteter Fahrplan liegt bereit (wird gleich geladen)
|
||||
|
||||
@property
|
||||
def has_rt(self) -> bool:
|
||||
@@ -67,8 +68,12 @@ def watch_feeds():
|
||||
"""Lädt je Quelle den passenden Fahrplan: den, auf den sich die Echtzeitdaten beziehen (Schweiz:
|
||||
die schalten erst um 15 Uhr auf einen neuen Fahrplan um), sonst den neusten."""
|
||||
today = dt.datetime.now(TZ).date()
|
||||
found = {}
|
||||
for src in S.sources.values(): # erst alle markieren, damit die Karte nicht mit einem Land allein startet
|
||||
found[src.name] = sorted(m.parent.name for m in (C.FEEDS_DIR / src.name).glob("*/meta.json"))
|
||||
src.on_disk = bool(found[src.name])
|
||||
for src in S.sources.values():
|
||||
ready = sorted(m.parent.name for m in (C.FEEDS_DIR / src.name).glob("*/meta.json"))
|
||||
ready = found[src.name]
|
||||
if not ready:
|
||||
continue
|
||||
want = src.rt_version if src.rt_version in ready else ready[-1]
|
||||
@@ -171,12 +176,13 @@ def trip(source: str, date: str, ti: int):
|
||||
@app.get("/api/status")
|
||||
def status():
|
||||
loaded = [s for s in S.sources.values() if s.feed]
|
||||
pending = [s for s in S.sources.values() if s.on_disk and not s.feed] # nicht halbe Karte zeigen
|
||||
rt = [s for s in loaded if s.has_rt]
|
||||
ok = [s for s in rt if not s.rt_error and s.rt_at and time.time() - s.rt_at < 180]
|
||||
return {
|
||||
"loaded": bool(loaded),
|
||||
# erst "bereit", wenn Positionen mit (dem ersten Versuch) Echtzeit berechnet sind
|
||||
"ready": bool(loaded and S.computed_at and all(s.rt_tried_at and S.computed_at >= s.rt_tried_at for s in rt)),
|
||||
"ready": bool(loaded and not pending and S.computed_at and all(s.rt_tried_at and S.computed_at >= s.rt_tried_at for s in rt)),
|
||||
"vehicles": S.count,
|
||||
"rt_ok": bool(ok) and len(ok) == len(loaded),
|
||||
"rt_some": bool(ok),
|
||||
|
||||
Reference in New Issue
Block a user