I wrote this tool because I wanted to determine the leg-by-leg mileage of a trip I took from Boston to Buffalo to Kansas City to Denver to .... It was too tedious to type in each trip leg pair individually into the form at maps.yahoo.com and wait for the results.

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
    This is really cool. Not sure when I'll use it, but I have filed it away for when I need it!
Re: Multi-stop Trip Yahoo Maps Tool
by kesterkester (Hermit) on Aug 30, 2004 at 17:21 UTC
    A small improvement, incorporating the fine WWW::Mechanize module, and working directly on the form, instead of mucking with the URL:
Re: Multi-stop Trip Yahoo Maps Tool
by QM (Parson) on Aug 29, 2004 at 15:41 UTC
    Not to knock your initiative...but there are other mapping services that allow multiple leg trips. For instance, Rand McNally.

    -QM
    --
    Quantum Mechanics: The dreams stuff is made of