NAME
WWW::AzimuthAero - Parser for https://azimuth.aero/
VERSION
version 0.2
SYNOPSIS
use WWW::AzimuthAero;
my $az = WWW::AzimuthAero->new();
$az->get_schedule_dates( from => 'ROV', to => 'KLF' );
$az->get( from => 'ROV', to => 'LED', date => '14.06.2019' );
$az->get_lowest_fares( from => 'ROV', to => 'LED', max => '14.08.2019' );
$az->print_flights(
$az->get_lowest_fares(
from => 'ROV',
to => 'LED',
max => '14.08.2019',
progress_bar => 1
)
)
Outside:
perl -Ilib -MData::Dumper -MWWW::AzimuthAero -e 'my $x = WWW::AzimuthAero->new->route_map->transfer_routes; warn Dumper $x;'
DESCRIPTION
This module provides a parser for https://azimuth.aero/
Module can be useful for creating price monitoring services and flexible travel planners
Module uses Mojo::UserAgent as user agent and Mojo::DOM + JavaScript::V8 as DOM parser
FOR DEVELOPERS
How to generate DOM samples for unit tests after git clone:
$ perl -Ilib -e "use WWW::AzimuthAero::Mock; WWW::AzimuthAero::Mock->generate()"
See WWW::AzimuthAero::Mock and Mojo::UserAgent::Mockable for more details
API urls that modules uses:
https://booking.azimuth.aero/ (for fetching route map and initialize session)
https://azimuth.aero/ru/flights?from=ROV&to=LED (for fetching schedule)
https://booking.azimuth.aero/!/ROV/LED/19.06.2019/1-0-0/ (for fetching prices)
TO-DO
+ implement find_transits
+ Checking more than 1 transfer
+ debug output of "get_fares_schedule" in WWW::AzimuthAero and others
new
use WWW::AzimuthAero;
my $az = Azimuth->new();
# or my $az = Azimuth->new(ua_str => 'yandex-travel');
route_map
Return WWW::AzimuthAero::RouteMap object
perl -Ilib -MWWW::AzimuthAero -MData::Dumper::AutoEncode -e 'my $x = WWW::AzimuthAero->new->route_map; warn eDumper $x;'
get_schedule_dates
Get schedule by requested direction
$az->get_schedule_dates( from => 'ROV', to => 'KLF' );
$az->get_schedule_dates( from => 'ROV', to => 'PKV', max => '20.06.2019' ); # will start search from today
$az->get_schedule_dates( from => 'ROV', to => 'PKV', min => '16.06.2019', max => '20.06.2019' );
Return list of available dates in '%d.%m.%Y' format
Method is useful for minimize amount of API requests
If no available_to property set (like at https://azimuth.aero/ru/flights?from=ROV&to=PKV ) will check for 2 months forward and return all dates in range
find_no_schedule
Return hash with routes with no available schedule, presumably all transit routes.
print_flights
my @x = $az->get_lowest_fares( from => 'ROV', to => 'MOW', max => '16.06.2019', progress_bar => 1 );
$az->print_flights(@x);
get
Checks for flight between two cities on selected date.
Cities are specified as IATA codes.
$az->get( from => 'ROV', to => 'LED', date => '04.06.2019' );
Return ARRAYref with WWW::AzimuthAero::Flight objects or hash with error like
{ 'error' => 'No flights found' }
get_fares_schedule
Get fares schedule between selected cities. Cities are specified as IATA codes.
Returned data is sorted by date, ascending
$az->get_lowest_fares(
from => 'ROV',
to => 'LED',
min => '7.06.2019',
max => '15.06.2019',
progress_bar => 1,
);
get_lowest_fares
Get lowest fares between selected cities. Cities are specified as IATA codes.
$az->get_lowest_fares(
from => 'ROV',
to => 'LED',
min => '7.06.2019',
max => '15.06.2019',
progress_bar => 1,
check_neighbors => 1, # will check PKV instead LED and KLG instead of MOW
find_transits => 1, # will find transit cities that are not mentioned by azimuth
max_delay_days => 1,
# max_edges => 2 # hardcoded cow
);
AUTHOR
Pavel Serikov <pavelsr@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by Pavel Serikov.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.