#!/usr/bin/perl # Author: Peter R. Wood, http://prwdot.org/ use strict; use Image::Magick; use Net::FTP; use File::Copy; use Getopt::Std; my %args; getopts( 'ums:h:', \%args ); my $archive = ""; my $tempdir = ""; my $username = ""; my $password = ""; my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time); $year += 1900; $mon++; if ( $args{s} ) { opendir( SOURCE, "$args{s}" ); mkdir( "$archive/$year", 0755 ) if ( !-d "$archive/$year" ); mkdir( "$archive/$year/$mon", 0755 ) if ( !-d "$archive/$year/$mon" ); mkdir( "$archive/$year/$mon/$mday", 0755 ) if ( !-d "$archive/$year/$mon/$mday" ); my $ftp; if ( $args{u} ) { print "Logging in to FTP\n"; $ftp = new Net::FTP( $args{h} ); $ftp->login( $username, $password ); $ftp->cwd("uploads"); print "Logged in to FTP\n"; } while ( my $filename = readdir(SOURCE) ) { if ( $filename =~ /\w+\.JPG$/oi ) { if ( $args{m} ) { print "Moving $args{s}/$filename to $archive/$year/$mon/$mday/$filename\n"; rename( "$args{s}/$filename", "$archive/$year/$mon/$mday/$filename" ); } else { print "Copying $args{s}/$filename to $archive/$year/$mon/$mday/$filename\n"; copy( "$args{s}/$filename", "$archive/$year/$mon/$mday/$filename" ); } if ( $args{u} ) { my $magick = new Image::Magick; $magick->read("$archive/$year/$mon/$mday/$filename"); print "Scaling $filename...\n"; $magick->Scale( geometry => '640x480' ); print "Writing $filename to $tempdir/$filename\n"; $magick->write("$tempdir/$filename"); print "Uploading $filename...\n"; $ftp->put("$tempdir/$filename"); print "Deleting $tempdir/$filename\n"; unlink("$tempdir/$filename"); } } } closedir(SOURCE); if ( $args{u} ) { $ftp->quit; } } elsif ( !$args{s} ) { print "Error: You must specify the source directory with -s \n"; }