summaryrefslogtreecommitdiff
path: root/lib/Travel/Status/DE
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travel/Status/DE')
-rw-r--r--lib/Travel/Status/DE/HAFAS.pm37
1 files changed, 27 insertions, 10 deletions
diff --git a/lib/Travel/Status/DE/HAFAS.pm b/lib/Travel/Status/DE/HAFAS.pm
index 7cd1c97..b47c2fe 100644
--- a/lib/Travel/Status/DE/HAFAS.pm
+++ b/lib/Travel/Status/DE/HAFAS.pm
@@ -16,18 +16,19 @@ our $VERSION = '1.05';
my %hafas_instance = (
BVG => {
- url => 'http://bvg.hafas.de/bin/stboard.exe',
- name => 'Berliner Verkehrsgesellschaft',
+ url => 'http://bvg.hafas.de/bin/stboard.exe',
+ name => 'Berliner Verkehrsgesellschaft',
productbits => [qw[s u tram bus ferry ice regio ondemand]],
},
DB => {
- url => 'http://reiseauskunft.bahn.de/bin/bhftafel.exe',
- name => 'Deutsche Bahn',
- productbits => [qw[ice ic_ec d regio s bus ferry u tram ondemand x x x x]],
+ url => 'http://reiseauskunft.bahn.de/bin/bhftafel.exe',
+ name => 'Deutsche Bahn',
+ productbits =>
+ [qw[ice ic_ec d regio s bus ferry u tram ondemand x x x x]],
},
NASA => {
- url => 'http://reiseauskunft.insa.de/bin/stboard.exe',
- name => 'Nahverkehrsservice Sachsen-Anhalt',
+ url => 'http://reiseauskunft.insa.de/bin/stboard.exe',
+ name => 'Nahverkehrsservice Sachsen-Anhalt',
productbits => [qw[ice ice regio regio regio tram bus ondemand]],
},
);
@@ -60,6 +61,7 @@ sub new {
my $ref = {
active_service => $service,
developer_mode => $conf{developer_mode},
+ excluded_mots => $conf{excluded_mots},
post => {
input => $conf{station},
date => $date,
@@ -114,10 +116,25 @@ sub set_productfilter {
my $service = $self->{active_service};
- if ($service and exists $hafas_instance{$service}{productbits}) {
- $self->{post}{productsFilter}
- = '1' x ( scalar @{ $hafas_instance{$service}{productbits} } );
+ if ( not $service or not exists $hafas_instance{$service}{productbits} ) {
+ return;
}
+
+ $self->{post}{productsFilter}
+ = '1' x ( scalar @{ $hafas_instance{$service}{productbits} } );
+
+ if ( $self->{excluded_mots} and @{ $self->{excluded_mots} } ) {
+ my %mot_pos;
+ for my $i ( 0 .. $#{ $hafas_instance{$service}{productbits} } ) {
+ $mot_pos{ $hafas_instance{$service}{productbits}[$i] } = $i;
+ }
+ for my $mot ( @{ $self->{excluded_mots} } ) {
+ if ( exists $mot_pos{$mot} ) {
+ substr( $self->{post}{productsFilter}, $mot_pos{$mot}, 1 ) = 0;
+ }
+ }
+ }
+
}
sub check_input_error {