diff options
| -rwxr-xr-x | bin/mris | 2 | ||||
| -rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn.pm | 77 | ||||
| -rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn/Departure.pm | 82 | 
3 files changed, 159 insertions, 2 deletions
@@ -47,7 +47,7 @@ for my $d ( $status->departures() ) {  	printf(  		"%5s %-10s %-80s %-20s %-2d %s\n", -		$d->time, $d->train, join( q{ }, @via_show ), +		$d->time, $d->train, join( q{  }, @via_show ),  		$d->destination, $d->platform, $d->info  	);  } diff --git a/lib/Travel/Status/DE/DeutscheBahn.pm b/lib/Travel/Status/DE/DeutscheBahn.pm index 499f540..748184c 100644 --- a/lib/Travel/Status/DE/DeutscheBahn.pm +++ b/lib/Travel/Status/DE/DeutscheBahn.pm @@ -53,6 +53,21 @@ sub new {  	return bless( $ref, $obj );  } +sub new_from_html { +	my ( $obj, $html ) = @_; + +	my $ref = { html => $html, }; + +	$ref->{tree} = XML::LibXML->load_html( +		string            => $ref->{html}, +		recover           => 2, +		suppress_errors   => 1, +		suppress_warnings => 1, +	); + +	return bless( $ref, $obj ); +} +  sub departures {  	my ($self) = @_; @@ -137,30 +152,92 @@ departure monitor  =head1 SYNOPSIS +	use Travel::Status::DE::DeutscheBahn; + +	my $status = Travel::Status::DE::DeutscheBahn->new( +		station => 'Essen Hbf', +	); + +	for my $departure ($status->departures) { +		printf( +			"At %s: %s to %s from platform %s\n", +			$departure->time, +			$departure->train, +			$departure->destination, +			$departure->platform, +		); +	} +  =head1 VERSION  version 0.0  =head1 DESCRIPTION +Travel::Status::DE::DeutscheBahn is an interface to the DeutscheBahn +arrival/departure monitor available at +L<http://mobile.bahn.de/bin/mobil/bhftafel.exe/dn?rt=1>. + +It takes a station name and (optional) date and time and reports all +departures at that station starting at the specified point in time (now if +unspecified). By default, it will list the next 20 departures. +  =head1 METHODS  =over +=item my $status = Travel::Status::DE::DeutscheBahn->new(I<%opts>) + +Returns a new Travel::Status::DE::DeutscheBahn element. Supported I<opts> are: + +=over + +=item B<station> => I<station> + +The train station to report for, e.g. "Essen HBf". Mandatory. + +=item B<date> => I<dd>.I<mm>.I<yyyy> + +Date to report for. Defaults to the current day. + +=item B<time> => I<hh>:I<mm> + +Time to report for. Defaults to now. + +=back + +=item $status->departures() + +Returns a list of departures (20 by default). Each list element is a +Travel::Status::DE::DeutscheBahn::Departure(3pm) object. +  =back  =head1 DIAGNOSTICS +None. +  =head1 DEPENDENCIES  =over +=item * Class::Accessor(3pm) + +=item * LWP::UserAgent(3pm) + +=item * XML::LibXML(3pm) +  =back  =head1 BUGS AND LIMITATIONS +The web interface also offers arrival monitoring. This is not yet supported +in this module. +  =head1 SEE ALSO +mris(1), Travel::Status::DE::DeutscheBahn::Departure(3pm). +  =head1 AUTHOR  Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> diff --git a/lib/Travel/Status/DE/DeutscheBahn/Departure.pm b/lib/Travel/Status/DE/DeutscheBahn/Departure.pm index 9ca1aa9..d4487ac 100644 --- a/lib/Travel/Status/DE/DeutscheBahn/Departure.pm +++ b/lib/Travel/Status/DE/DeutscheBahn/Departure.pm @@ -36,30 +36,110 @@ departure received by Travel::Status::DE::DeutscheBahn  =head1 SYNOPSIS +	for my $departure ($status->departures) { +		printf( +			"At %s: %s to %s from platform %s\n", +			$departure->time, +			$departure->train, +			$departure->destination, +			$departure->platform, +		); +	} +  =head1 VERSION -version +version 0.0  =head1 DESCRIPTION +Travel::Status::DE::DeutscheBahn::Departure describes a single departure as +obtained by Travel::Status::DE::DeutscheBahn. It contains information about +the platform, departure time, destination and more. + +=head1 ACCESSORS + +=over + +=item $departure->destination + +Returns the name of the destination station, e.g. "Dortmund Hbf". + +=item $departure->info + +Returns additional information, usually wether the train is on time or +delayed. + +=item $departure->platform + +Returns the platform from which the train will depart. + +=item $departure->route + +Returns a list of station names the train will pass between the selected +station and its destination. + +=item $departure->time + +Returns the departure time as string in "hh:mm" format. + +=item $departure->train + +Returns the line / train name, either in a format like "S 1" (S-Bahn line 1) +or "RE 10111" (RegionalExpress train 10111, no line information). + +=back +  =head1 METHODS  =over +=item $departure = Travel::Status::DE::DeutscheBahn::Departure->new(I<%data>) + +Returns a new Travel::Status::DE::DeutscheBahn::Departure object. +You usually do not need to call this. + +Required I<data>: + +=over + +=item B<time> => I<hh:mm> + +=item B<train> => I<string> + +=item B<route_raw> => I<string> + +=item B<route> => I<arrayref> + +=item B<destination> => I<string> + +=item B<platform> => I<string> + +=item B<info> => I<string> + +=back +  =back  =head1 DIAGNOSTICS +None. +  =head1 DEPENDENCIES  =over +=item Class::Accessor(3pm) +  =back  =head1 BUGS AND LIMITATIONS +Unknown. +  =head1 SEE ALSO +Travel::Status::DE::DeutscheBahn(3pm). +  =head1 AUTHOR  Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt>  | 
