summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-01-19 00:01:19 +0100
committerBirte Kristina Friesel <derf@finalrewind.org>2025-01-19 00:01:19 +0100
commitbfdedd4d6a737a5aaa59aada43fdb24576745f5c (patch)
tree4d108405e47b4f5870f7437f79708be80ad920ff /bin
parent9bac2c56e91db08d9081727549a8bbf84f3a7ee9 (diff)
add mot filter ,transfers, and routes
Diffstat (limited to 'bin')
-rwxr-xr-xbin/dbris52
1 files changed, 42 insertions, 10 deletions
diff --git a/bin/dbris b/bin/dbris
index 6b435cc..f30cdca 100755
--- a/bin/dbris
+++ b/bin/dbris
@@ -32,14 +32,15 @@ my $output_bold = -t STDOUT ? "\033[1m" : q{};
my $output_reset = -t STDOUT ? "\033[0m" : q{};
GetOptions(
- 'd|date=s' => \$date,
- 'h|help' => sub { show_help(0) },
- 't|time=s' => \$time,
- 'V|version' => \&show_version,
- 'cache!' => \$use_cache,
- 'devmode' => \$developer_mode,
- 'json' => \$json_output,
- 'raw-json' => \$raw_json_output,
+ 'd|date=s' => \$date,
+ 'h|help' => sub { show_help(0) },
+ 'm|modes-of-transit=s' => \$mots,
+ 't|time=s' => \$time,
+ 'V|version' => \&show_version,
+ 'cache!' => \$use_cache,
+ 'devmode' => \$developer_mode,
+ 'json' => \$json_output,
+ 'raw-json' => \$raw_json_output,
) or show_help(1);
@@ -129,6 +130,10 @@ if ( $date or $time ) {
$opt{datetime} = $dt;
}
+if ($mots) {
+ $opt{modes_of_transit} = [ split( qr{, *}, $mots ) ];
+}
+
sub show_help {
my ($code) = @_;
@@ -201,9 +206,18 @@ for my $connection ( $ris->connections ) {
my $header = q{};
for my $segment ( $connection->segments ) {
- $header .= sprintf( ' %s', $segment->train_short, );
+ if ( $segment->train_short ) {
+ $header .= sprintf( ' %s', $segment->train_short );
+ }
+ elsif ( $segment->is_transfer ) {
+ $header .= sprintf( ' %.1fkm', $segment->distance_m / 1e3 );
+ }
+ else {
+ $header .= q{ ??};
+ }
}
+ say q{};
printf(
"%s (%02d:%02d) %s %s%s\n\n",
$connection->dep
@@ -215,10 +229,28 @@ for my $connection ( $ris->connections ) {
$header,
);
for my $segment ( $connection->segments ) {
- printf( "%s → %s\n", $segment->train_mid, $segment->direction );
+ if ( $segment->is_transfer ) {
+ for my $note ( $segment->transfer_notes ) {
+ say $note;
+ }
+ }
+ elsif ( $segment->direction ) {
+ printf( "${output_bold}%s${output_reset} → %s %s\n",
+ $segment->train_mid, $segment->direction,
+ format_occupancy($segment) );
+ }
+ else {
+ printf( "${output_bold}%s${output_reset}\n", $segment->train_long );
+ }
printf( "%s ab %s\n",
$segment->dep->strftime('%H:%M'),
$segment->dep_name );
+
+ for my $stop ( $segment->route ) {
+ printf( "%s %s %s\n",
+ $stop->arr ? $stop->arr->strftime('%H:%M') : q{ },
+ format_occupancy($stop), $stop->name, );
+ }
printf( "%s an %s\n",
$segment->arr->strftime('%H:%M'),
$segment->arr_name );