From 9136346df99124ba724197411b46f4859cb46a9c Mon Sep 17 00:00:00 2001 From: lzgirlcat Date: Sun, 8 Sep 2024 17:53:08 +0200 Subject: [PATCH] fix formatting, bump version --- koleo/api.py | 4 ++-- koleo/cli.py | 25 +++++++++++++------------ koleo/utils.py | 20 ++++++++++++++++++++ setup.py | 2 +- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/koleo/api.py b/koleo/api.py index b0b0877..f8f004f 100644 --- a/koleo/api.py +++ b/koleo/api.py @@ -106,11 +106,11 @@ def get_train_calendars(self, brand_name: str, number: int, name: str | None = N params = {"brand": brand_name, "nr": number} if name: params["name"] = name.upper() # WHY!!!!!!!!! - return self._get_json("/api/v2/main/train_calendars", params=params) + return self._get_json("/pl/train_calendars", params=params) def get_train(self, id: int) -> TrainDetailResponse: # https://koleo.pl/pl/trains/142821312 - return self._get_json(f"/api/v2/main/trains/{id}") + return self._get_json(f"/pl/trains/{id}") def get_connections( self, diff --git a/koleo/cli.py b/koleo/cli.py index 0f0add4..b967936 100644 --- a/koleo/cli.py +++ b/koleo/cli.py @@ -6,7 +6,7 @@ from .api import KoleoAPI from .types import TrainOnStationInfo, TrainDetailResponse -from .utils import name_to_slug, parse_datetime, time_dict_to_dt +from .utils import name_to_slug, parse_datetime, time_dict_to_dt, convert_platform_number from .storage import Storage, DEFAULT_CONFIG_PATH install(show_locals=True) @@ -87,24 +87,24 @@ def full_arrivals(self, station: str, date: datetime): def train_info(self, brand: str, name: str, date: datetime): brand = brand.upper().strip() - name = name.upper().strip() - cache_id = f"tc-{brand}-{name}" + name = name.strip() if name.isnumeric(): number = int(name) - name = "" - elif len(parts := name.split(" ")) == 2 or len(parts := name.split("-")) == 2: - number, name = parts + train_name = "" + elif len((parts := name.split(" "))) == 2 or len((parts := name.split("-"))) == 2: + number, train_name = parts number = int(number) else: raise ValueError("Invalid train name!") + cache_id = f"tc-{brand}-{number}-{name}" train_calendars = self.storage.get_cache(cache_id) or self.storage.set_cache( - cache_id, self.client.get_train_calendars(brand, number, name) + cache_id, self.client.get_train_calendars(brand, number, train_name) ) brands = self.storage.get_cache("brands") or self.storage.set_cache("brands", self.client.get_brands()) train_id = train_calendars["train_calendars"][0]["date_train_map"][date.strftime("%Y-%m-%d")] train_details = self.client.get_train(train_id) brand = next(iter(i for i in brands if i["id"] == train_details["train"]["brand_id"]), {}).get("name", "") - data = f"{brand} {train_details["train"]["train_full_name"]}\n" + parts = [f"{brand} {train_details["train"]["train_full_name"]}"] vehicle_types: dict[str, str] = { stop["station_display_name"]: stop["vehicle_type"] for stop in train_details["stops"] @@ -115,10 +115,10 @@ def train_info(self, brand: str, name: str, date: datetime): start = keys[0] for i in range(1, len(keys)): if vehicle_types[keys[i]] != vehicle_types[start]: - data += f"[bold green] {start} - {keys[i]}:[/bold green] {vehicle_types[start]}\n" + parts.append(f"[bold green] {start} - {keys[i]}:[/bold green] {vehicle_types[start]}") start = keys[i] - data += f"[bold green] {start} - {keys[-1]}:[/bold green] {vehicle_types[start]}" - self.console.print(data) + parts.append(f"[bold green] {start} - {keys[-1]}:[/bold green] {vehicle_types[start]}") + self.console.print("\n".join(parts)) self.console.print(self.train_route_table(train_details)) def route(self, start: str, end: str, date: datetime, direct: bool = False, purchasable: bool = False): @@ -147,8 +147,9 @@ def train_route_table(self, train: TrainDetailResponse): for stop in train["stops"]: arr = time_dict_to_dt(stop["arrival"]) dep = time_dict_to_dt(stop["departure"]) + platform = convert_platform_number(stop["platform"]) or "" parts.append( - f"[white underline]{stop["distance"] / 1000:0.4}km[/white underline] [bold green]{arr.strftime("%H:%M")}[/bold green] - [bold red]{dep.strftime("%H:%M")}[/bold red] [purple] {stop["station_display_name"]} {stop["platform"]} [/purple]" + f"[white underline]{stop["distance"] / 1000:^5.1f}km[/white underline] [bold green]{arr.strftime("%H:%M")}[/bold green] - [bold red]{dep.strftime("%H:%M")}[/bold red] [purple]{stop["station_display_name"]} {platform} [/purple]" ) return "\n".join(parts) diff --git a/koleo/utils.py b/koleo/utils.py index a1d3133..5e8e278 100644 --- a/koleo/utils.py +++ b/koleo/utils.py @@ -39,3 +39,23 @@ def time_dict_to_dt(s: TimeDict): def name_to_slug(name: str) -> str: return "".join([TRANSLITERATIONS.get(char, char) for char in name.lower()]) + + +NUMERAL_TO_ARABIC = { + "I": 1, + "II": 2, + "III": 3, + "IV": 4, + "V": 5, + "VI": 6, + "VII": 7, + "VIII": 8, + "IX": 9, + "X": 10, + "XI": 11, # wtf poznaƄ??? + "XII": 12 # just to be safe +} + + +def convert_platform_number(number: str) -> int | None: + return NUMERAL_TO_ARABIC.get(number) diff --git a/setup.py b/setup.py index 9132cbe..edde864 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ def parse_requirements_file(path): setuptools.setup( name="koleo-cli", - version="0.2.137", + version="0.2.137.1", description="Koleo CLI", long_description=long_description(), long_description_content_type="text/markdown",