Package: sketchfab
Sketchfab API ClientGetting startedInstall the module:pip3installsketchfabUsing the CLISKETCHFAB_API_TOKEN=XXXXsketchfabupload-fmy_file.zipUsing the libThis code creates a directory for each of your collection and places all models inside it.importosimportsketchfabsfc=sketchfab.Client('YOUR-API-KEY')forcinsfc.collections():print("Collection:",c)col_dir=os.path.join("download",c.name)os.makedirs(col_dir,exist_ok=True)forminc.models():model_dir=os.path.join(col_dir,m.name)print(f"  Model:{m.name}({model_dir})")ifnotos.path.exists(model_dir):os.rename(m.download_to_dir(),model_dir)Which will give you something like that:Collection: Collection{empty collection}
Collection: Collection{housing-updates}
  Model: tableKitchen80x200 (download/housing-updates/tableKitchen80x200)
  Model: kitchenModSink120x65x210 (download/housing-updates/kitchenModSink120x65x210)
  Model: kitchenModSink60x65x90 (download/housing-updates/kitchenModSink60x65x90)
  Model: kitchenModFridge60x65x210 (download/housing-updates/kitchenModFridge60x65x210)
  Model: kitchenModCorner65x65x210 (download/housing-updates/kitchenModCorner65x65x210)
  Model: kitchenModBasic10x65x90 (download/housing-updates/kitchenModBasic10x65x90)
  Model: kitchenModWasher60x65x210 (download/housing-updates/kitchenModWasher60x65x210)
  Model: kitchenModSink60x65x210 (download/housing-updates/kitchenModSink60x65x210)
  Model: kitchenModBasic20x65x210 (download/housing-updates/kitchenModBasic20x65x210)
  Model: washbasin120x60 (download/housing-updates/washbasin120x60)
  Model: kitchenModWasher60x65x90 (download/housing-updates/kitchenModWasher60x65x90)
  Model: bedDouble140x200-2 (download/housing-updates/bedDouble140x200-2)
  Model: simpleBed90x200 (download/housing-updates/simpleBed90x200)
  Model: wcFloor70x40 (download/housing-updates/wcFloor70x40)
  Model: kitchenModBasic60x65x90 (download/housing-updates/kitchenModBasic60x65x90)
  Model: kitchenModDishWasher60x65x90 (download/housing-updates/kitchenModDishWasher60x65x90)
  Model: kitchenModSink120x65x90 (download/housing-updates/kitchenModSink120x65x90)
  Model: kitchenModStove60x65x210 (download/housing-updates/kitchenModStove60x65x210)
  Model: kitchenModStove60x65x90 (download/housing-updates/kitchenModStove60x65x90)
  Model: washbasin60x60 (download/housing-updates/washbasin60x60)
  Model: tableKitchen80x140 (download/housing-updates/tableKitchen80x140)
  Model: shower90x90 (download/housing-updates/shower90x90)
  Model: kitchenModDishWasher60x65x210 (download/housing-updates/kitchenModDishWasher60x65x210)
  Model: kitchenModBasic10x65x210 (download/housing-updates/kitchenModBasic10x65x210)Using docker$ docker run -e SKETCHFAB_API_TOKEN=XXXXX -ti habx/sketchfab list_collections
Collections are:
2019-10-20 21:12:24,417 Starting new HTTPS connection (1): api.sketchfab.com:443
2019-10-20 21:12:24,762 https://api.sketchfab.com:443 "GET /v3/me/collections HTTP/1.1" 200 None
- Collection 1
- Collection 2WhyI couldn't find oneThesample codes from the sketchfab websiteare pretty much unuseableChoicesThe API is designed to be as simple as possible to useKnown issuesThe code might not be the most elegant. I'm definitely interested by any feedback you can provide me on that.The official swagger-based documentation is not respecting the API behavior. As such you might find that:The library enforces some strange rules (like passing a model when creating a model)The library doesn't properly use the API (like listing the models of a collection through search)In both case it was by trial and error that I discovered how to use the API. If you find better ways to do
it I'm interested.The listing doesn't work with long lists (it needs to be re-implemented as an iterable calling the listing API)The CLI is pretty much useless at this stageMissing APIsYou can submit pull-requests or ask me to implement any feature that you need and might be missing.