XML2JSON for MyMiniCity

XML を返す API(?) があるのになんでわざわざ scrape してんの?

#!/usr/bin/perl

use strict;
use warnings;
use XML::Simple;
use LWP::Simple;
use JSON::Syck;
use URI::Escape;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $q = CGI->new;

my ($city, $callback);
if ($q->path_info =~ m{^/([^/]+)/(.*)}o) {
    $callback = $1;
    $city = $2;
}
else {
    print $q->header(-status => '400 Bad Request');
    exit;
}

my $url = sprintf 'http://%s.myminicity.com/xml', uri_escape($city);
my $ref = XMLin(get($url));

print $q->header(-type => 'application/x-javascript; charset=utf-8');
printf '%s(%s);', $callback, JSON::Syck::Dump($ref);

同じ結果になるかどうかは知らない。

とりあえずどさくさにまぎれて自分のも書いておく。