1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package Travel::Status::DeutscheBahn;
use strict;
use warnings;
use 5.010;
use base 'Exporter';
use LWP::UserAgent;
use XML::LibXML;
our @EXPORT_OK = ();
my $VERSION = '0.0';
sub new {
my ($obj, %conf) = @_;
my $ref = {};
my @now = localtime(time());
$ref->{post} = {
date => $conf{date}
// sprintf('%d.%d.%d', $now[3], $now[4] + 1, $now[5] + 1900),
time => $conf{time}
// sprintf('%d:%d', $now[2], $now[1]),
input => $conf{station},
inputef => q{#},
produtsFilter => '1111101000000000',
REQTrin_name => q{},
maxJorneys => 20,
delayedJourney => undef,
start => 'Suchen',
boardType => 'Abfahrt',
ao => 'yes',
};
return bless($ref, $obj);
}
sub get {
my ($self) = @_;
my $ua = LWP::UserAgent->new();
my $reply = $ua->post(
'http://mobile.bahn.de/bin/mobil/bhftafel.exe/dox',
$self->{post},
)->content();
my $tree = XML::LibXML->load_html(
string => $reply,
recover => 2,
suppress_errors => 1,
suppress_warnings => 1,
);
my $xp_element
= XML::LibXML::XPathExpression->new('//div[@class="sqdetailsDep trow"]');
my $xp_line = XML::LibXML::XPathExpression->new('./a/span');
my $xp_dep = XML::LibXML::XPathExpression->new('./span[1]');
for my $div (@{$tree->findnodes($xp_element)}) {
say $div->findnodes($xp_line)->[0]->textContent();
say $div->findnodes($xp_dep)->[0]->textContent();
say q{};
}
}
1;
|