Export photo albums to Sketchfab as interactive 3D galleries
CSS Python HTML JavaScript Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
3dmodels
bin
flaskapp
static
tasks
templates
.gitignore
LICENSE
Makefile
Procfile
Procfile-dashboard
README.md
blender_script.py
mrq-config.py
requirements.txt
runtime.txt
webnworker.sh

README.md

imgfab / instamuseum

Because your Facebook photos are so 2D!

How it works:

  • Facebook connect or Instagram => List of images & descriptions from a user, saved as JSON
  • tasks/gather_data.py: Downloads all the images in a temporary directory
  • tasks/create_model.py: Creates a blender model from the directory
  • tasks/upload_to_sketchfab.py: Uploads the model to http://sketchfab.com

TODO

  • Adapt plane size to the photo ratio / crop differently
  • Facebook: Set sketchfab name from album name
  • Show FB album photo count (+ thumbnails?)
  • Much more exception handling
  • Other photo sources: Twitter, Flickr, URL list
  • Upload with annotations/hotspots
  • Fix photo ratio on other layouts than museum
  • New layouts (sphere, larger rooms, ...)
  • remove form when model generating
  • Explicit warning when instagram account doesn't exist
  • Good return page if oauth2 cancel
  • Right-to-left images in Wall layout
  • Instagram tags (someone asked for explore/tags/supermario/)

Host your own instance on Heroku!

# Create an heroku app with this
heroku apps:create
heroku config:set BLENDER_PATH=build/blender-2.73a-linux-glibc211-x86_64/blender-softwaregl

# Add your API keys
heroku config:set SKETCHFAB_API_KEY=x SOCIAL_AUTH_FACEBOOK_KEY=x SOCIAL_AUTH_FACEBOOK_SECRET=x SOCIAL_AUTH_SKETCHFAB_KEY=x SOCIAL_AUTH_SKETCHFAB_SECRET=x

# Add MongoDB & Redis (for storage & task queue)
heroku addons:add rediscloud
heroku addons:add mongolab

Run imgfab/instamuseum locally

To test locally you can pull the config variables:


# If you have access, get config from prod.
# If not, export your own values!
export MONGOLAB_URI=`heroku config:get -a imgfab MONGOLAB_URI`
export REDISCLOUD_URL=`heroku config:get -a imgfab REDISCLOUD_URL`
export SKETCHFAB_API_KEY=`heroku config:get -a imgfab SKETCHFAB_API_KEY`
export SOCIAL_AUTH_FACEBOOK_KEY=`heroku config:get -a imgfab SOCIAL_AUTH_FACEBOOK_KEY`
export SOCIAL_AUTH_FACEBOOK_SECRET=`heroku config:get -a imgfab SOCIAL_AUTH_FACEBOOK_SECRET`
export SOCIAL_AUTH_INSTAGRAM_ID=`heroku config:get -a imgfab SOCIAL_AUTH_INSTAGRAM_ID`
export SOCIAL_AUTH_INSTAGRAM_SECRET=`heroku config:get -a imgfab SOCIAL_AUTH_INSTAGRAM_SECRET`
export SOCIAL_AUTH_SKETCHFAB_KEY=`heroku config:get -a imgfab SOCIAL_AUTH_SKETCHFAB_KEY`
export SOCIAL_AUTH_SKETCHFAB_SECRET=`heroku config:get -a imgfab SOCIAL_AUTH_SKETCHFAB_SECRET`

# If you installed blender with homebrew:
export BLENDER_PATH=/opt/homebrew-cask/Caskroom/blender/2.76b/blender-2.76b-OSX_10.6-x86_64/blender.app/Contents/MacOS/blender

# Then run a worker, a dashboard & the flask app:
mrq-worker highpriority default &
mrq-dashboard &
python flaskapp/app.py