summaryrefslogtreecommitdiff
path: root/lib/Travel/Status/DeutscheBahn.pm
blob: dfa50d00e762545d2ea98856863e8dba3ff9cded (plain)
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;