#!/s/std/bin/perl

BEGIN {push @INC, '/u/e/n/englet/public/html/comics/';}

use strict;
use warnings;

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request::Common;
use Time::Local;

use comics;

sub comics_com($);
sub download($);

my $DEBUG = 0;

my $VERSION = v1.0.1;

my $item;
my $prefix = '/u/e/n/englet/public/html/comics/';

my $now = undef;
if ((defined $ARGV[0]) && ($ARGV[0] =~ m/(\d{4})(\d\d)(\d\d)/)) 
{
    $now = timelocal(0,0,0, $3, $2-1, $1-1900) 
} else {
    $now = time();
}
print(localtime($now)."\n");

my @time   = localtime($now);
my $obj    = new comics::(\@time);
my %list   = $obj->list();

my $agent = LWP::UserAgent->new;
my $hdrs = new HTTP::Headers('User-Agent' => "Ima JRATT/$VERSION");

foreach $item (keys %list) {
$list{$item}{name} = $item;
download  ($list{$item}) unless $list{$item}{custom};
comics_com($list{$item}) if     $list{$item}{custom};
};

sub comics_com($) {
my %item  = %{$_[0]};
my $file = sprintf("$item{fill}-%04d%02d%02d.gif", $time[5]+1900,$time[4]+1,$time[3]);
my $url_page = sprintf("http://www.comics.com/comics/$item{fill}/archive/$item{fill}-%04d%02d%02d.html", $time[5]+1900,$time[4]+1,$time[3]);
my $url_image = undef;

my $folder = $item{folder};
unless ( ( -e $prefix.$folder) and ( -d $prefix.$folder) ) {mkdir "$prefix$folder"};

# B.C. and a few others are different because they're from Creators Syndicate Inc.
if( $item{creators} )
{
	$url_page = sprintf("http://www.comics.com/creators/$item{fill}/archive/$item{fill}-%04d%02d%02d.html", $time[5]+1900,$time[4]+1,$time[3]);
}

if ($DEBUG) 
{
	print "Inside comics_com()...\n";
	print "\$file = $file\n";
	print "\$url_page = $url_page\n";
}

unless ( -e $prefix.$folder."/".$file) {
  my $req = HTTP::Request->new("GET" => $url_page);
  my $response = $agent->request($req);
  if ($response->is_success)
    {
      if (($response->content) =~ m@$item{search}@) {
          $url_image = 'http://www.comics.com'.$1;
          $req = HTTP::Request->new("GET" => $url_image);
          $response = $agent->request($req, $prefix.$folder."/".$file);
          if ($response->is_success)
                {
		print "Got $item{name} image\n";
		}
            else{print STDERR "Failed to get $item{name} image\n";}
        }
        else{print STDERR "Failed to parse $item{name} page\n";}
    }
    else{print STDERR "Failed to get $item{name} page\n";}
}

}

sub download($) {
my %item  = %{$_[0]};

mkdir "$prefix$item{folder}" unless ( ( -e $prefix.$item{folder}) and ( -d $prefix.$item{folder}) );

unless ( -e $prefix.$item{folder}."/".$item{file}) {
  $hdrs->referrer($item{referer}) if defined $item{referer};
#print "$item{url}\n";
  my $req = new HTTP::Request("GET", $item{url}, $hdrs);
  my $response = $agent->request($req, $prefix.$item{folder}."/".$item{file});
  if ($response->is_success)
        {print "Got $item{name}\n";}
    else{print STDERR "Failed $item{name}\n";}
}

}

