Using this code you can simply type:
multimap 'boston, ma' 'buffalo, ny' 'Kansas City, mo' 'Denver, co'
and it will save the individual results from maps.yahoo.com to the current directory as trip_leg_N.html, where N goes from 1 to (the number of addresses you gave) - 1.
This currently just works for addresses and cities, not airport codes.
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; use LWP::Simple; { my @addrs = @ARGV; if ( scalar @addrs < 2 ) { print "You have " . scalar @addrs . " addresses. " . "Need 2 or more. Enter 'done<return>' to finish\n"; while ( <> ) { last if $_ eq "done\n"; push @addrs, $_; } die help () if scalar @addrs < 2; chomp @addrs; } @addrs = process_addresses ( @addrs ); foreach ( 0 .. scalar @addrs - 2 ) { my $url = make_url ( [ $addrs[$_], $addrs[$_+1] ] ); getstore ( $url, "trip_leg_" . ($_ + 1) . ".html" ); } } sub process_addresses { my @addrs = @_; foreach ( @addrs ) { my $count = $_ =~ tr/,/,/; $_ = [ split ( /\s*,\s*/, $_, $count ) ]; unshift @$_, "" if 1 == $count; $_ =~ s/\s+/%2C/g foreach @$_; } return @addrs; } sub make_url { my ( $addr_pair ) = @_; my $url = "http://maps.yahoo.com/dd_result?country=us&tcountry=us" + . join ( '&', "addr=" . $addr_pair->[0][0], "csz=" . $addr_pair->[0][1], "taddr=" . $addr_pair->[1][0], "tcsz=" . $addr_pair->[1][1] ); return $url; } sub help { print << " EOF"; usage: multimap "31 Kinnaird St, Cambridge, MA" \ "27 Hall St, Somerville, MA" \ "60 Garden St, Cambridge, MA" EOF }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Multi-stop Trip Yahoo Maps Tool
by tomkersten (Initiate) on Aug 28, 2004 at 20:00 UTC | |
|
Re: Multi-stop Trip Yahoo Maps Tool
by kesterkester (Hermit) on Aug 30, 2004 at 17:21 UTC | |
|
Re: Multi-stop Trip Yahoo Maps Tool
by QM (Parson) on Aug 29, 2004 at 15:41 UTC |