smdown.pl - Unix command-line album downloader
darryl
Registered Users Posts: 997 Major grins
Hi -- a while back I wrote a quick and dirty album downloader in Perl that scraped the HTML from your albums, grabbed links to the originals, and used curl to download the images.
One drawback to the hack was that it didn't get your files back to their original filename.
Well, I finally sat down, figured out this Smugmug API thing, and wrote myself a new version.
Basically it works like this:
smdown.pl --login login --password password http://your.smugmug.com/album
If you use John Ruttenberg's great sm_tool.py for uploading, your .smugmugrc file with login: and password: should work for smdown.pl as well, meaning you won't have to use --login and --password every time you call this script.
It requires a few fairly standard Perl modules (XML::Simple, Getopt::Long and File::Spec) and it makes calls to curl to actually talk to the Smugmug website. These come standard on most Linux/FreeBSD boxes, as well as OS X. You might be able to get this script to work in Windows as well, but I don't have the time nor inclination to test this.
Here's the link: http://www.darryl.com/smdown/
Feedback welcome. Enjoy!
One drawback to the hack was that it didn't get your files back to their original filename.
Well, I finally sat down, figured out this Smugmug API thing, and wrote myself a new version.
Basically it works like this:
smdown.pl --login login --password password http://your.smugmug.com/album
If you use John Ruttenberg's great sm_tool.py for uploading, your .smugmugrc file with login: and password: should work for smdown.pl as well, meaning you won't have to use --login and --password every time you call this script.
It requires a few fairly standard Perl modules (XML::Simple, Getopt::Long and File::Spec) and it makes calls to curl to actually talk to the Smugmug website. These come standard on most Linux/FreeBSD boxes, as well as OS X. You might be able to get this script to work in Windows as well, but I don't have the time nor inclination to test this.
Here's the link: http://www.darryl.com/smdown/
Feedback welcome. Enjoy!
0
Comments
I have written a fair bit of scraping stuff in perl but not for smugmug, I am interested to know why did decided to use curl in of something like LWP, which is part of the perl distribution ?
Cheers,
David
SmugMug API Developer
My Photos
https://api.SmugMug.com/hack/rest/beta.mg?method=smugmug.login.withPassword&EmailAddress=$login&Password=$password&Version=1.1.1&APIKey=$apikey
https://api.SmugMug.com/hack/rest/beta.mg?method=smugmug.albums.getInfo&SessionID=$sessionid&AlbumID=$albumid
https://api.SmugMug.com/hack/rest/beta.mg?method=smugmug.images.get&SessionID=$sessionid&AlbumID=$albumid&Heavy=1
https://api.SmugMug.com/hack/rest/beta.mg?method=smugmug.logout&SessionID=$sessionid
all become...
https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.login.withPassword&EmailAddress=$login&Password=$password&APIKey=$apikey
https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.albums.getInfo&SessionID=$sessionid&AlbumID=$albumid
https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.images.get&SessionID=$sessionid&AlbumID=$albumid&Heavy=1
https://api.SmugMug.com/hack/rest/1.1.1/?method=smugmug.logout&SessionID=$sessionid
note, you can drop the Version parameter from the login method.
Cheers,
David
SmugMug API Developer
My Photos
Ah, thanks David. Fixed. I didn't realize that 1.1.1 was out of beta. When I was testing w/o beta.mg or a version number in the URL, the Heavy bit didn't work for images.
Laziness. I did all my testing on the command-line w/ curl, so it was easier for me to cut and paste those lines into a Perl script that handles all of the logic. I come from a lazy sysadmin bastard background, so that's how I work, using Perl to glue together system tools.
Also, I think like how curl displays stats about download speed and status. Saves me from having to write progress bars, etc.
:-}
--Darryl
Version 1.1.1 isn't out of beta yet, Don's has just changed the api endpoints to make things easier for future development.
SmugMug API Developer
My Photos
Ah, and it clearly *is* still in Beta. In smugmug.albums.getInfo, <info> changed to <Albums>. Or maybe that's because I was using the old endpoints.
Anyways, lost my Album titles for a little bit back there. I probably should do a bit more error checking. :-}
--Darryl
Well, I finally got around to trying my script on my OS X box, and lo and behold, XML::Simple isn't installed by default. Well, phooey.
So I hacked it to work without a real XML parser. Suuuuper-hackish, but hey, it works for me. :-}
http://www.darryl.com/smdown/
Grab the one named, smdown-noxml.txt and save it as smdown.pl
--Darryl