#!/usr/bin/perl
use warnings;
use strict;
use JSON::Parse;
use LWP::UserAgent;
use CGI;
use Data::Dumper;
my $query = new CGI;
print CGI::header(-charset=>'utf-8');
print CGI::start_html(-title => "XKCD Explorer");
print "
XKCD Explorer
\n";
my $width = $query->url_param('width') || 1024;
my $height = $query->url_param('height') || 117;
my $referer = $query->url_param('referer') || 'http://xkcd.com/';
my $underscore = $query->url_param('underscore') || 13;
my $user_agent = $query->url_param('user-agent') || 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9';
if($query->url_param('submit'))
{
# http://umwelt.xkcd.com/story/ghenkEggov8?callback=waldoCallback&w=1042&h=117&r=&_=13
# Fetch the JSON from xkcd.
my $ua = LWP::UserAgent->new();
$ua->agent($user_agent);
my $url = "http://umwelt.xkcd.com/story/ghenkEggov8?callback=waldoCallback&w=${width}&h=${height}&r=${referer}&_=${underscore}";
my $request = HTTP::Request->new(GET => $url);
$request->header( 'Referer' => 'http://imgs.xkcd.com/static/waldo.js');
my $response = $ua->request($request);
my $content = $response->decoded_content() if($response->is_success());
print "$url
\n";
print "$content
\n";
$content =~ s/^waldoCallback\(//;
$content =~ s/\)$//;
my $json = JSON::Parse::json_to_perl($content);
print "
";
print "\n";
print Dumper($json);
print "\n";
print "
\n";
# Emit a comic
foreach my $panel (@{$json->{panels}})
{
my $image_url = $panel->{images}->[0]->{url};
print "\n";
}
}
print "
\n";
# Emit the form
print "\n";
print CGI::end_html();
# Draw the form