finished sort ordering of arrival times
This commit is contained in:
@@ -39,6 +39,7 @@ import argparse
|
|||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from rich.console import Console, Group
|
from rich.console import Console, Group
|
||||||
from rich.table import Table
|
from rich.table import Table
|
||||||
@@ -124,6 +125,15 @@ def fetch_departures(start_id, max_journeys=12):
|
|||||||
departures = data["Departure"] if isinstance(data["Departure"], list) else [data["Departure"]]
|
departures = data["Departure"] if isinstance(data["Departure"], list) else [data["Departure"]]
|
||||||
return departures
|
return departures
|
||||||
|
|
||||||
|
def _parse_mins(cell) -> int:
|
||||||
|
"""Wandelt '15 Min', '0 Min' oder 'Jetzt' in eine Zahl um (für Sortierung)."""
|
||||||
|
if isinstance(cell, int):
|
||||||
|
return cell
|
||||||
|
s = str(cell).strip().lower()
|
||||||
|
if s == "jetzt":
|
||||||
|
return 0
|
||||||
|
m = re.search(r"-?\d+", s)
|
||||||
|
return int(m.group()) if m else 999 # Unbekanntes/fehlendes ans Ende
|
||||||
|
|
||||||
def build_table_data(departures):
|
def build_table_data(departures):
|
||||||
"""Erzeugt Datenlisten für West- und Ost-Richtung."""
|
"""Erzeugt Datenlisten für West- und Ost-Richtung."""
|
||||||
@@ -183,6 +193,10 @@ def run_terminal_mode():
|
|||||||
departures = fetch_departures(START_ID)
|
departures = fetch_departures(START_ID)
|
||||||
now, west, east = build_table_data(departures)
|
now, west, east = build_table_data(departures)
|
||||||
|
|
||||||
|
# KORREKTE NUMERISCHE SORTIERUNG
|
||||||
|
west.sort(key=lambda row: _parse_mins(row[2]))
|
||||||
|
east.sort(key=lambda row: _parse_mins(row[2]))
|
||||||
|
|
||||||
table_west = Table(title=f"← Richtung Frankfurt (Westen) – {now}")
|
table_west = Table(title=f"← Richtung Frankfurt (Westen) – {now}")
|
||||||
table_west.add_column("Linie", justify="center", style="cyan", no_wrap=True)
|
table_west.add_column("Linie", justify="center", style="cyan", no_wrap=True)
|
||||||
table_west.add_column("Ziel", justify="left", style="magenta")
|
table_west.add_column("Ziel", justify="left", style="magenta")
|
||||||
@@ -262,9 +276,9 @@ class RMVApp(App):
|
|||||||
departures = fetch_departures(self.current_id)
|
departures = fetch_departures(self.current_id)
|
||||||
_, west, east = build_table_data(departures)
|
_, west, east = build_table_data(departures)
|
||||||
|
|
||||||
# Sortieren nach Minutenwert, wie im Lightmodus
|
# KORREKTE NUMERISCHE SORTIERUNG
|
||||||
west.sort(key=lambda row: int(row[2]) if row[2].isdigit() else 999)
|
west.sort(key=lambda row: _parse_mins(row[2]))
|
||||||
east.sort(key=lambda row: int(row[2]) if row[2].isdigit() else 999)
|
east.sort(key=lambda row: _parse_mins(row[2]))
|
||||||
|
|
||||||
self.update_table(self.table_west, west)
|
self.update_table(self.table_west, west)
|
||||||
self.update_table(self.table_east, east)
|
self.update_table(self.table_east, east)
|
||||||
|
|||||||
Reference in New Issue
Block a user