Shutterfly Story Export

Shutterfly has a neat feature called “Stories” that have a cool UI, but no easy way to export.  I wanted to store the photos in Google Photos, so here is the process I came up with.

  1. It starts with a Shutterfly story URL like: https://photos.shutterfly.com/story/id/120075324736
  2. Replace <STORY_ID> in the cURL command below, and find the payload.message property. curl 'https://cmd.thislife.com/json?method=album.getAlbum' -H 'Pragma: no-cache' -H 'Origin: https://photos.shutterfly.com' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' --data '{"method":"album.getAlbum","params":[null,"<STORY_ID>","startupItem",null,false,true],"headers":{"X-SFLY-SubSource":"publicstory"},"id":null}' --compressed
  3. Next step, is to extract the image_id from the payload.message with a RegExp like .*?([0-9]{12})\n then substitute them into URLS as https://im1.shutterfly.com/ng/services/mediarender/THISLIFE/010022485163/media//large/0/enhance
  4. Then, if you put all the URLs into a space delimited file, you can run a simple for loop, such as n=100; for url in `cat list.txt`; do curl $url -o "image_$n.JPG"; n=$((n+1)); done

At the end of this process, you’ll have a directory full of hi-res JPGs that you can do whatever you want with.

I noticed the URLs contain a timestamp (1471657034) but I dever did figure out what it was for. https://im1.shutterfly.com/ng/services/mediarender/THISLIFE/010022485163/media/121826524073/medium/1471657034/enhance

The message also contains a long alpha-numeric string for each image. I didn’t figure out what that was for either. It started with yet another cryptic string that I couldn’t find a use for.

157b44d5b0000
121826524851 57b7b45014c00bac0057b7b45001002248516357b7c12378855ab9331347f4157b44d6e0000
121826524234 57b7b44c0bac14c00057b7b44c01002248516357b7c123bfa4f1312ea78e85157b44d6f0000
121826524073 57b7b44a0bac14c00057b7b44a01002248516357b7c123edd744f094e1fcb0157b44d700000
121826523834 57b7b4490bac14c00057b7b44901002248516357b7c12362cf104bb4e11757157b44d740000
121826523508 57b7b4470bac14c00057b7b44701002248516357b7c123d169473b97dc3630157b44d770000
121826523165 57b7b4440bac14c00057b7b44401002248516357b7c1237dfbfc0f1368dc9a157b44d7a0000
121826522792 57b7b4410bac14c00057b7b44101002248516357b7c12373603a7260d0ddec157b44d7c0000
121826522646 57b7b4400bac14c00057b7b44001002248516357b7c123957948702543040f157b44d840000
121826522483 57b7b43e0bac14c00057b7b43e01002248516357b7c12333c7f79484ebbbb0157b44d850000
121826522170 57b7b43d0bac14c00057b7b43d01002248516357b7c123a3ca4db0aee66c83157b44d860000
121826522071 57b7b43b0bac14c00057b7b43b01002248516357b7c123c07f26ba41d323be157b44d8a0000