#!/usr/bin/env perl use strict; use warnings; use Getopt::Long; use WebService::Shutterstock; my($api_user, $api_key, $username, $password, %subscription_filter, $image_id, $size, $file, $directory, %metadata, $help); GetOptions( "api-user=s" => \$api_user, "api-key=s" => \$api_key, "username=s" => \$username, "password=s" => \$password, "subscription=s" => \%subscription_filter, "image=i" => \$image_id, "size=s" => \$size, "metadata=s" => \%metadata, "file=s" => \$file, "directory=s" => \$directory, "help" => \$help ); usage(-1) if grep { !defined($_) } ($api_user, $api_key, $username, $password, $image_id, $size); usage(-1) if !$file && !$directory; usage() if $help; my $shutterstock = WebService::Shutterstock->new( api_username => $api_user, api_key => $api_key ); my $user = $shutterstock->auth( username => $username, password => $password ); my $licensed_image = $user->license_image( image_id => $image_id, size => $size, ( keys %metadata ? ( metadata => \%metadata ) : () ), ( keys %subscription_filter ? ( subscription => \%subscription_filter ) : () ) ); my $saved; if ($directory) { $saved = $licensed_image->download( directory => $directory ); } elsif ( $file eq '-' ) { binmode(STDOUT); print $licensed_image->download; } elsif ($file) { $saved = $licensed_image->download( file => $file ); } if($saved){ print "Saved image to $saved\n"; } sub usage { my $error = shift; print <<"_USAGE_"; usage: $0 --api-user justme --api-key abc123 --username my_user --password my_password --image 59915404 --size medium --directory . _USAGE_ exit $error || 0; }