Diff for /comics/fetch.pl.new between versions 1.2 and 1.10

version 1.2, 2011/08/18 12:50:06 version 1.10, 2013/02/26 14:24:14
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 %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 34  foreach my $comic ( sort keys %comics ) Line 39  foreach my $comic ( sort keys %comics )
   &writeComic ( \%comics, $comic, \%dates );    &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 );  ## &writeMainIndex ( \%dates );
   
 &writeFooter( \%dates );  &writeFooter( \%dates );
Line 101  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 155  sub writeMainIndex ($$) { Line 171  sub writeMainIndex ($$) {
 #######################################################################  #######################################################################
 sub writeFooter {  sub writeFooter {
         my ( $date ) = @_;          my ( $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 $sysDate = `date`;          my $sysDate = `date`;
   
         open INDEX, ">>$indexFile";          open INDEX, ">>$indexFile";
         print INDEX <<EOF;          print INDEX <<EOF;
 </table>  </table>
 <center>Generated at $sysDate</br>  <center>
 Version: $ver  <font size="2">
   Generated on: <font color="green">$sysDate</font><br/>
   Version: <font color="green">$ver</font><br />
   CVS: <a href="http://demandred.dyndns.org/cgi-bin/cvsweb/comics/">http://demandred.dyndns.org/cgi-bin/cvsweb/comics/</a>
   <p>    <p>
     <a href="http://validator.w3.org/check?uri=referer"><img      <a href="http://validator.w3.org/check?uri=referer"><img
       src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" height="31" width="88" border="0" /></a>        src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" height="31" width="88" border="0" /></a>
Line 190  sub checkDir ($$) { Line 210  sub checkDir ($$) {
 #######################################################################  #######################################################################
 sub writeTitle ($$) {  sub writeTitle ($$) {
         my ( $date ) = @_;          my ( $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 $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 222  sub directDownload ($$) { Line 243  sub directDownload ($$) {
         my $cDir  = $date->{'mon2'} . $date->{'year2'};          my $cDir  = $date->{'mon2'} . $date->{'year2'};
         my $cDate = $date->{'day2'};          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);          return system($cmd);
 }  }
   
Line 267  sub indexDownload ($$) { Line 288  sub indexDownload ($$) {
         if ( $comicLine ) {          if ( $comicLine ) {
                 if ( $comicLine =~ m/(gif|jpg|png)/i ) { $comics->{$comic}{'ext'} = $1; }                  if ( $comicLine =~ m/(gif|jpg|png)/i ) { $comics->{$comic}{'ext'} = $1; }
                 my $comicURL = ( $comicLine =~ m/http/ ) ? $comicLine : $mainURL . $comicLine;                  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 );                  system( $cmd );
                 return 0;                  return 0;
         }          }
Line 300  sub parseComic ($$) { Line 321  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'}-=1;  ## <-- 5 days ago  
   
         $dates{'year'} += 1900;          $dates{'year'} += 1900;
         $dates{'year2'} = substr $dates{'year'}, 2, 2;          $dates{'year2'} = substr $dates{'year'}, 2, 2;
Line 313  sub fetchDates () { Line 331  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
   
   

Removed from v.1.2  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>