--- comics/fetch.pl.new 2011/08/18 12:39:12 1.1.1.1 +++ comics/fetch.pl.new 2013/02/26 14:24:14 1.10 @@ -3,19 +3,24 @@ use strict; use File::Path; use Data::Dumper; +use Pod::Usage; +use Getopt::Long; ## ## Some default values ## -my $ver = q/$Id: fetch.pl.new,v 1.1.1.1 2011/08/18 12:39:12 nick Exp $/; +my $ver = q/$Id: fetch.pl.new,v 1.10 2013/02/26 14:24:14 nick Exp $/; my $comicFile = "comics.conf"; my %comics = &readComicConfig ( $comicFile ); +my %opts = &fetchOptions( ); +my $days_ago = $opts{'days'} || 0; my %dates = &fetchDates(); my $baseDir = $comics{'configs'}{'base_directory'} || "."; my $imageDir = $baseDir . "/" . ( $comics{'configs'}{'image_directory'} || "images" ) . "/$dates{'mon2'}$dates{'year2'}"; my $indexDir = $baseDir . "/" . ( $comics{'configs'}{'index_directory'} || "indexes" ); -my $USER_AGENT = "ozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.10 (maverick) Firefox/3.6.18"; +my $USER_AGENT = "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.10 (maverick) Firefox/3.6.18"; +my @days = qw/ Sunday Monday Tuesday Wednesday Thursday Friday Saturday /; my $DATE=`date`; chomp $DATE; @@ -34,6 +39,16 @@ foreach my $comic ( sort keys %comics ) &writeComic ( \%comics, $comic, \%dates ); } +print "Finding in $imageDir/*-$dates{'day2'}.jpg\n"; +foreach my $file ( glob( "$imageDir/*-$dates{'day2'}.jpg" ) ) +{ + my $size = `/usr/bin/identify $file`; + $size =~ s/.*\s(\d+)x\d+.*/$1/; + + system( "/usr/bin/convert -resize 640 $file $file" ) + if ( $size > 640 ) +} + ## &writeMainIndex ( \%dates ); &writeFooter( \%dates ); @@ -101,7 +116,8 @@ sub readComicConfig ($$) { ####################################################################### sub writeComic ($$) { my ( $comics, $comic, $date ) = @_; - my $indexFile = $indexDir . "/index-" . $date->{'year2'} . $date->{'mon2'} . + my $indexFile = $indexDir . "/index-" . $days[$date->{'dow'}] . + "-" . $date->{'year2'} . $date->{'mon2'} . $date->{'day2'} . ".html"; my $content = <{'year2'} . $date->{'mon2'} . + my $indexFile = $indexDir . "/index-" . $days[$date->{'dow'}] . + "-" . $date->{'year2'} . $date->{'mon2'} . $date->{'day2'} . ".html"; my $sysDate = `date`; open INDEX, ">>$indexFile"; print INDEX < -
Generated at $sysDate +
+ +Generated on: $sysDate
+Version: $ver
+CVS: http://demandred.dyndns.org/cgi-bin/cvsweb/comics/

Valid XHTML 1.0 Transitional @@ -189,9 +210,10 @@ sub checkDir ($$) { ####################################################################### sub writeTitle ($$) { my ( $date ) = @_; - my $indexFile = $indexDir . "/index-" . $date->{'year2'} . $date->{'mon2'} . + my $indexFile = $indexDir . "/index-" . $days[$date->{'dow'}] . + "-" . $date->{'year2'} . $date->{'mon2'} . $date->{'day2'} . ".html"; - my $today = $date->{'mon'} . "/" . $date->{'day'} . "/" . $date->{'year'}; + my $today = $days[$date->{'dow'}] . " " . $date->{'mon'} . "/" . $date->{'day'} . "/" . $date->{'year'}; open INDEX, ">$indexFile"; print INDEX <{'mon2'} . $date->{'year2'}; my $cDate = $date->{'day2'}; - my $cmd = "wget -q $file --referer=\"" . $comics->{$comic}{'url'} ."\" --user-agent=\"$USER_AGENT\" -O - | /usr/bin/convert -resize 640 - jpeg:images/$cDir/$comic-$cDate.jpg"; + my $cmd = "wget -q $file --referer=\"" . $comics->{$comic}{'url'} ."\" --user-agent=\"$USER_AGENT\" -O - | /usr/bin/convert - jpeg:images/$cDir/$comic-$cDate.jpg"; return system($cmd); } @@ -266,7 +288,7 @@ sub indexDownload ($$) { if ( $comicLine ) { if ( $comicLine =~ m/(gif|jpg|png)/i ) { $comics->{$comic}{'ext'} = $1; } my $comicURL = ( $comicLine =~ m/http/ ) ? $comicLine : $mainURL . $comicLine; - my $cmd = "wget --user-agent=\"$USER_AGENT\" --referer=\"" . $comics->{$comic}{'url'} . "\" -q $comicURL -O - | /usr/bin/convert -resize 640 - jpeg:images/$cDir/$comic-$cDate.jpg"; + my $cmd = "wget --user-agent=\"$USER_AGENT\" --referer=\"" . $comics->{$comic}{'url'} . "\" -q $comicURL -O - | /usr/bin/convert - jpeg:images/$cDir/$comic-$cDate.jpg"; system( $cmd ); return 0; } @@ -299,10 +321,7 @@ sub parseComic ($$) { sub fetchDates () { my %dates = (); - ($dates{'day'}, $dates{'mon'}, $dates{'year'}, $dates{'dow'}) = (localtime)[3,4,5,6]; - - ## If you missed a day or two, reflect it here: - # $dates{'day'}-=1; ## <-- 5 days ago + ($dates{'day'}, $dates{'mon'}, $dates{'year'}, $dates{'dow'}) = (localtime(time - (86400 * $days_ago )))[3,4,5,6]; $dates{'year'} += 1900; $dates{'year2'} = substr $dates{'year'}, 2, 2; @@ -312,3 +331,59 @@ sub fetchDates () { return %dates; } + +############################################################################### +## +## &fetchOptions( ); +## +## Grab our command line arguments and toss them in to a hash +## +############################################################################### +sub fetchOptions { + my %opts; + + &GetOptions( + "days:i" => \$opts{'days'}, + "help|?" => \$opts{'help'}, + "man" => \$opts{'man'}, + ) || &pod2usage( ); + &pod2usage( ) if defined $opts{'help'}; + &pod2usage( { -verbose => 2, -input => \*DATA } ) if defined $opts{'man'}; + + return %opts; +} + +__END__ + +=head1 NAME + +fetch.pl - Fetches comics and places them all locally in a single html file. + +=head1 SYNOPSIS + +fetch.pl [options] + +Options: + --days,d Fetch comics from X days ago + --help,? Display the basic help menu + --man,m Display the detailed man page + +=head1 DESCRIPTION + +=head1 HISTORY + +=head1 AUTHOR + +Nicholas DeClario + +=head1 BUGS + +This is a work in progress. Please report all bugs to the author. + +=head1 SEE ALSO + +=head1 COPYRIGHT + +=cut + +