Easy to use bulk model uploader for Shapeways API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

63 lines
2.3 KiB

#!/usr/bin/env python
import json
import shutil
import os
import urlparse
from shapeways.client import Client
import swuploader
import docopt
__doc__ = """
Usage:
swuploader (-h | --help)
swuploader (-v | --version)
swuploader auth [--server=<server>] <consumer_key> <consumer_secret> <output>
swuploader upload [--models=<models>] [--out=<out>] [--server=<server>] <auth_tokens>
Options:
-h --help Show this help text
-v --version Show version information
-m <models> --models=<models> Set the directory for where model ini's are available [default: ./]
-o <out> --out=<out> Set the directory where the model ini's are moved to after upload [default: ./]
-s <server> --server=<server> Set different api server url if desired.
"""
args = docopt.docopt(__doc__, version="swuploader %s" % (swuploader.__version__, ))
if args["auth"]:
client = Client(args["<consumer_key>"], args["<consumer_secret>"])
if args["--server"]:
client.base_url = args["--server"]
url = client.connect()
parts = urlparse.urlparse(url)
qs = urlparse.parse_qs(parts.query)
oauth_token = qs["oauth_token"][0]
print "Please Visit: %s" % (url, )
verifier = raw_input("Paste Verifier Code: ")
client.verify(oauth_token, verifier)
auth_tokens = {
"consumer_key": client.consumer_key,
"consumer_secret": client.consumer_secret,
"oauth_token": client.oauth_token,
"oauth_secret": client.oauth_secret,
}
with open(args["<output>"], "w") as fp:
json.dump(auth_tokens, fp)
elif args["upload"]:
auth_tokens = {}
with open(args["<auth_tokens>"]) as fp:
auth_tokens = json.load(fp)
client = Client(**auth_tokens)
if args["--server"]:
client.base_url = args["--server"]
for settings_filename, model in swuploader.get_models(args["--models"]):
print "Uploading Model From: %s" % (settings_filename, )
results = swuploader.upload_model(model, client)
if results:
print "Visit Model At: %s" % (results["urls"]["editModelUrl"]["address"], )
basename = os.path.basename(settings_filename)
new_location = os.path.abspath(os.path.join(args["--out"], basename))
shutil.move(settings_filename, new_location)
else:
print "Model Upload Failed"