#!/usr/bin/perl use XML::Simple ; use Getopt::Long ; use File::Spec ; $apikey = 'RQEnwr79lu04MbW3FX1w8vx1aAXZPUqz' ; $xml = new XML::Simple ; $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) ; } GetOptions( "login=s" => \$login, "password=s" => \$password ) ; $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"` ; $albumdata = $xml->XMLin("$album") ; $title = "$albumdata->{Albums}->{Album}->{Title}" ; if ($title eq '') { die "Album Title could not be found, possible API change. Bailing.\n" ; } print "Creating directory: $title\n" ; mkdir $title; chdir $title; $images = `curl --silent -k "https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.images.get&SessionID=$sessionid&AlbumID=$albumid&Heavy=1"` ; $imagedata = $xml->XMLin("$images") ; while (($imageid, $imagehash) = each(%{$imagedata->{Images}->{Image}}) ){ $imageid = $imagehash->{Info}->{Image}->{id} ; $origfilename = $imagehash->{Info}->{Image}->{FileName} ; $origurl = $imagehash->{Info}->{Image}->{OriginalURL} ; $smugname = "$imageid-O.jpg" ; if ($origurl eq '') { die "Original URL could not be found, possible API change. Bailing.\n" ; } $download = `curl -O $origurl` ; print "Renaming to original file name: $origfilename\n" ; rename $smugname, $origfilename ; } $logout = `curl --silent -k 'https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.logout&SessionID=$sessionid'` ; # print $logout ;