diff options
Diffstat (limited to 'lib/Travel')
-rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn.pm | 77 | ||||
-rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn/Departure.pm | 82 |
2 files changed, 158 insertions, 1 deletions
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> |