Skip to content

Commit

Permalink
fix formatting, bump version
Browse files Browse the repository at this point in the history
  • Loading branch information
lzgirlcat committed Sep 8, 2024
1 parent 588b15b commit 9136346
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 15 deletions.
4 changes: 2 additions & 2 deletions koleo/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
25 changes: 13 additions & 12 deletions koleo/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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"]
Expand All @@ -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):
Expand Down Expand Up @@ -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)

Expand Down
20 changes: 20 additions & 0 deletions koleo/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit 9136346

Please sign in to comment.