Find your next train home while you are in CLI. I used the Dutch Railway Services (Nederlandse Spoorwegen) API to make myself this tool.
Usage:
$ nstimes [OPTIONS] COMMAND [ARGS]...
Options:
--version
: Print version info--install-completion
: Install completion for the current shell.--show-completion
: Show completion for the current shell, to copy it or customize the installation.--help
: Show this message and exit.
Commands:
journey
: Provide train type, platform and departure...update-stations-json
: Generate stations lookup
Provide train type, platform and departure times of an A -> B journey
Usage:
$ nstimes journey [OPTIONS]
Options:
--start TEXT
: Start station [required]--end TEXT
: Stop station [required]--token TEXT
: Token to talk with the NS API [env var: NS_API_TOKEN; required]--time TEXT
: Time to departure (%H:%M) [default: 12:19]--date TEXT
: Date to departure (%d-%m-%Y) [default: 15-10-2023]--printer-choice [table|ascii]
: [default: ascii]--help
: Show this message and exit.
Generate stations lookup, should not be neccesary
Usage:
$ nstimes update-stations-json [OPTIONS]
Options:
--token TEXT
: Token to talk with the NS API [env var: NS_API_TOKEN; required]--path TEXT
: Token to talk with the NS API [env var: NS_API_TOKEN; default: /home/erik/dev/ns_cli/nstimes/stations.json]--help
: Show this message and exit.
Installation
To install, run the following:
pip install nstimes
To verify, run:
nstimes --version
To install auto-completion, run:
nstimes --install-completion
In order for autocomplete to work, one might need to add this to their .zshrc
:
echo -e "\ncompinit -D\n" | tee -a ~/.zshrc
source ~/.zshrc # Reload shell
Obtaining NS token Create an account at the NS API portal. Then create a token here.
Add the token to your shell, for zsh:
echo -e "\nexport NS_API_TOKEN=****\n" | tee -a ~/.zshrc
source ~/.zshrc # Reload shell
Printers By default, this tool prints in ASCII, e.g.:
IC p. 12 in 4 min (21:37) -> (21:50)
IC p. 12 in 16 min (21:49) -> (22:02)
SPR p. 4 in 17 min (21:50) -> (22:10)
IC p. 12 in 34 min (22:07) -> (22:20)
IC p. 12 in 46 min (22:19) -> (22:32)
SPR p. 4 in 47 min (22:20) -> (22:40)
If you use the --printer-choice table
option it prints like:
Journeys from Utrecht Centraal -> Amersfoort Centraal at
24-01-2024 21:32
┏━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Train ┃ Platform ┃ Leaves in ┃ Departure time ┃ Arrival time ┃
┡━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ IC │ 12 │ 4 min │ (21:37) │ (21:50) │
│ IC │ 12 │ 16 min │ (21:49) │ (22:02) │
│ SPR │ 4 │ 17 min │ (21:50) │ (22:10) │
│ IC │ 12 │ 34 min │ (22:07) │ (22:20) │
│ IC │ 12 │ 46 min │ (22:19) │ (22:32) │
│ SPR │ 4 │ 47 min │ (22:20) │ (22:40) │
└───────┴──────────┴───────────┴────────────────┴──────────────┘