#!/usr/bin/perl use Getopt::Long ; use File::Spec ; $apikey = 'RQEnwr79lu04MbW3FX1w8vx1aAXZPUqz' ; GetOptions ( "login" => \$login, "password" => \$password ) ; $rcfile = File::Spec->catfile($ENV{'HOME'},'.smugmugrc') ; if (-f $rcfile) { open (RCFILE , "<$rcfile") ; while () { if (/^login:\s+(.+)$/) { $login = $1 } ; if (/^password:\s+(.+)$/) { $password = $1 } ; } close (RCFILE) ; } $url = shift @ARGV; if ($url eq '' || $url !~ /smugmug\.com/i || $login eq '' || $password eq '') { die "Usage: smdown.pl --login login --password password http://your.smugmug.com/album\n" } $albumid = $url ; $albumid =~ s/^.*\/(\d+)$/$1/; $login = `curl --silent -k "https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.login.withPassword&EmailAddress=$login&Password=$password&APIKey=$apikey"` ; if ($login =~ /msg="(.+)"/ms ) { die "Connection failed: $1\n" ; } else { $sessionid = $login ; $sessionid =~ s|^.+(.+).+|$1|ms ; } print "SessionID = $sessionid\n" ; $album = `curl --silent -k "https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.albums.getInfo&SessionID=$sessionid&AlbumID=$albumid"` ; $title = $album ; $title =~ s|^.+(.+).+|$1|ms ; if ($title eq '') { die "Album Title could not be found, possible API change. Bailing.\n" ; } print "Creating directory: $title\n" ; mkdir $title; chdir $title; @imagedata = `curl --silent -k "https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.images.get&SessionID=$sessionid&AlbumID=$albumid&Heavy=1"` ; $skip = 0 ; foreach (@imagedata) { if ( m|| && $skip == 0 ) { push @imageids, $1 ; $skip = 1; } if ( m|(.+)| ) { push @origfilenames, $1 ; } if ( m|(.+)| ) { push @origurls, $1 ; $skip = 0; } } for ($i=0 ; $i < scalar @imageids; $i++) { $smugname = "$imageids[$i]-O.jpg" ; if ($origurls[$i] eq '') { die "Original URL could not be found, possible API change. Bailing.\n" ; } $download = `curl -O $origurls[$i]` ; if ($origfilenames[$i] ne '') { print "Renaming to original file name: $origfilenames[$i]\n" ; rename $smugname, $origfilenames[$i] ; } else { print "Can't find original filename. Maybe this isn't your gallery. Oh well.\n" } } $logout = `curl --silent -k 'https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.logout&SessionID=$sessionid'` ; # print $logout ;