From d9373228ed772bd5030c2a749fd92c61a2ef7054 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 2 May 2009 18:48:05 +0200 Subject: efa: Display additional train-related information --- bin/efa | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/bin/efa b/bin/efa index 03563f1..a782511 100755 --- a/bin/efa +++ b/bin/efa @@ -53,14 +53,25 @@ sub parse_content($) { my $groupsize = 8; my $offset; my $return; + my @extra; for (my $offer = 0; exists($raw->[$offer]); $offer++) { + foreach (@{$raw->[$offer]}) { + s/\s*
\s*/, /g; + s/<[^>]+>//g; + } for (my $i = 0; @{$raw->[$offer]} >= (($i+1) * $groupsize); $i++) { $offset = $i * $groupsize; - # If the first field is not a time we've got some additional information. - # Sadly, this script does not parse it yet, so it's ignored - until ($raw->[$offer]->[$offset] =~ /^\d+:\d+$/) { - printf("# lost information: %s\n", $raw->[$offer]->[$offset]) if ($debug); - last unless (exists($raw->[$offer]->[++$offset])); + undef(@extra); + for my $j (0, 4, 8) { + until (not exists($raw->[$offer]->[$offset+$j]) or $raw->[$offer]->[$offset+$j] =~ /^\d+:\d+$/) { + last unless (exists($raw->[$offer]->[$offset+$j])); + last if ($raw->[$offer]->[$offset+$j] eq 'Verspätungen sind berücksichtigt'); + if ($raw->[$offer]->[$offset+$j] =~ /^\s*$/) { + splice(@{$raw->[$offer]}, $offset+$j, 1); + } else { + push(@extra, splice(@{$raw->[$offer]}, $offset+$j, 1)); + } + } } $return->[$offer]->[$i] = { deptime => $raw->[$offer]->[$offset], @@ -72,6 +83,7 @@ sub parse_content($) { arr => $raw->[$offer]->[$offset+5], arrstop => $raw->[$offer]->[$offset+6], }; + @{$return->[$offer]->[$i]->{extra}} = @extra; } } return($return); @@ -88,7 +100,7 @@ sub prepare_content($) { next; } foreach(split(/\n/)) { - if (/(?[^<]+)<\/span>/) { + if (/(?.+)<\/span><\/td>/) { push(@{$return->[$offer-1]}, $+{content}); } } @@ -183,6 +195,9 @@ $cons = parse_content($raw); for ($i = 0; $con = $cons->[$i]; $i++) { for ($j = 0; $part = $con->[$j]; $j++) { + foreach (@{$part->{extra}}) { + print "# $_\n"; + } printf( "%-5s %-2s %-30s %-20s %s\n%-5s %-2s %-30s\n\n", $part->{deptime}, $part->{dep}, $part->{depstop}, $part->{deptrain}, -- cgit v1.2.3