#!/usr/bin/perl -w

use strict;

use LWP::UserAgent;
use HTTP::Response;
use HTTP::Request;

use CGI qw(:standard);

use Time::HiRes qw(time);

my $url = "http://www.animenfo.com/search.php";

my $timeout = 10;
my $ua = LWP::UserAgent->new(agent => "Dave's Crazy AnimeNfo Search Interface", timeout => $timeout);

my $anime;

my $response;
my $return;

my @urls;
my $badwords = "JavaScript|helpabout";

my $start;
my $end;

sub fetch {
	$end = 0;
	$start = time;
	$response = $ua->post($url, { query => $anime, queryin => "anime_titles", option => "smart" });
	if ($response->is_success) {
		$end = time;
		$return = $response->content;
		$return =~ s/.*Search Result//s;
		@urls = grep {!/$badwords/o} $return =~ /href=["']([^"']+)["']/g;
		if (@urls) {
			$return = "http://www.animenfo.com/$urls[0]";
			return 1;
		} else {
			return 0;
		}
	} else {
		return -1;
	}
}

sub printh {
	print "Content-type: text/html\n\n";
}

$anime = param("anime");
if ($anime eq 'ping!') {
	$anime = '';
	&fetch;
	&printh;
	if ($end == 0) {
		print "...Timed out after ($timeout) seconds";
	} else {
		print "foobar";
		sprintf("...Fetched ($url) in (%.3f) seconds", $end-$start);
	}
	return 0;
} elsif ($anime =~ /^\w[\w ]*$/) {
	&printh;
	my $fetch = &fetch;
	if ($fetch == 1) {
		print "First match for ($anime): $return";
	} elsif ($fetch == 0) {
		print "No matching search results for ($anime)";
	} else {
		print "Timed out after ($timeout) seconds (query was \"$anime\")";
	}
	return 0;
} else {
	&printh;
	print "Please give me a valid search expression";
	return 0;
}
