|
|
| version 1.7, 2013/01/10 14:25:57 | version 1.9, 2013/02/25 13:48:21 |
|---|---|
| Line 3 | Line 3 |
| use strict; | use strict; |
| use File::Path; | use File::Path; |
| use Data::Dumper; | use Data::Dumper; |
| use Pod::Usage; | |
| use Getopt::Long; | |
| ## | ## |
| ## Some default values | ## Some default values |
| Line 10 use Data::Dumper; | Line 12 use Data::Dumper; |
| my $ver = q/$Id$/; | my $ver = q/$Id$/; |
| my $comicFile = "comics.conf"; | my $comicFile = "comics.conf"; |
| my %comics = &readComicConfig ( $comicFile ); | my %comics = &readComicConfig ( $comicFile ); |
| my $days_ago = 0; # Set this to fetch comics from X days ago | my %opts = &fetchOptions( ); |
| my $days_ago = $opts{'days'} || 0; | |
| my %dates = &fetchDates(); | my %dates = &fetchDates(); |
| my $baseDir = $comics{'configs'}{'base_directory'} || "."; | my $baseDir = $comics{'configs'}{'base_directory'} || "."; |
| my $imageDir = $baseDir . "/" . ( $comics{'configs'}{'image_directory'} || "images" ) . | my $imageDir = $baseDir . "/" . ( $comics{'configs'}{'image_directory'} || "images" ) . |
| "/$dates{'mon2'}$dates{'year2'}"; | "/$dates{'mon2'}$dates{'year2'}"; |
| my $indexDir = $baseDir . "/" . ( $comics{'configs'}{'index_directory'} || "indexes" ); | my $indexDir = $baseDir . "/" . ( $comics{'configs'}{'index_directory'} || "indexes" ); |
| 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 $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; | my $DATE=`date`; chomp $DATE; |
| Line 35 foreach my $comic ( sort keys %comics ) | Line 39 foreach my $comic ( sort keys %comics ) |
| &writeComic ( \%comics, $comic, \%dates ); | &writeComic ( \%comics, $comic, \%dates ); |
| } | } |
| my $D = `date +%d`; chomp $D; | print "Finding in $imageDir/*-$dates{'day2'}.jpg\n"; |
| print "Finding in $imageDir/*-$D.jpg\n"; | foreach my $file ( glob( "$imageDir/*-$dates{'day2'}.jpg" ) ) |
| foreach my $file ( glob( "$imageDir/*-$D.jpg" ) ) | |
| { | { |
| my $size = `/usr/bin/identify $file`; | my $size = `/usr/bin/identify $file`; |
| $size =~ s/.*\s(\d+)x\d+.*/$1/; | $size =~ s/.*\s(\d+)x\d+.*/$1/; |
| Line 113 sub readComicConfig ($$) { | Line 116 sub readComicConfig ($$) { |
| ####################################################################### | ####################################################################### |
| sub writeComic ($$) { | sub writeComic ($$) { |
| my ( $comics, $comic, $date ) = @_; | 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"; | $date->{'day2'} . ".html"; |
| my $content = <<EOF; | my $content = <<EOF; |
| Line 207 sub writeTitle ($$) { | Line 211 sub writeTitle ($$) { |
| my ( $date ) = @_; | my ( $date ) = @_; |
| my $indexFile = $indexDir . "/index-" . $date->{'year2'} . $date->{'mon2'} . | my $indexFile = $indexDir . "/index-" . $date->{'year2'} . $date->{'mon2'} . |
| $date->{'day2'} . ".html"; | $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"; | open INDEX, ">$indexFile"; |
| print INDEX <<EOF; | print INDEX <<EOF; |
| Line 315 sub parseComic ($$) { | Line 319 sub parseComic ($$) { |
| sub fetchDates () { | sub fetchDates () { |
| my %dates = (); | my %dates = (); |
| ($dates{'day'}, $dates{'mon'}, $dates{'year'}, $dates{'dow'}) = (localtime)[3,4,5,6]; | ($dates{'day'}, $dates{'mon'}, $dates{'year'}, $dates{'dow'}) = (localtime(time - (86400 * $days_ago )))[3,4,5,6]; |
| ## If you missed a day or two, reflect it here: | |
| $dates{'day'} -= $days_ago; ## <-- 5 days ago | |
| $dates{'year'} += 1900; | $dates{'year'} += 1900; |
| $dates{'year2'} = substr $dates{'year'}, 2, 2; | $dates{'year2'} = substr $dates{'year'}, 2, 2; |
| Line 328 sub fetchDates () { | Line 329 sub fetchDates () { |
| return %dates; | 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 <nick@declario.com> | |
| =head1 BUGS | |
| This is a work in progress. Please report all bugs to the author. | |
| =head1 SEE ALSO | |
| =head1 COPYRIGHT | |
| =cut | |