Sketchfab client
Project description
Sketchfab API Client
Getting started
Install the module:
pip3 install sketchfab
Using the CLI
SKETCHFAB_API_TOKEN=XXXX sketchfab upload -f my_file.zip
Using the lib
This code creates a directory for each of your collection and places all models inside it.
import os
import sketchfab
sfc = sketchfab.Client('YOUR-API-KEY')
for c in sfc.collections():
print("Collection:", c)
col_dir = os.path.join("download", c.name)
os.makedirs(col_dir, exist_ok=True)
for m in c.models():
model_dir = os.path.join(col_dir, m.name)
print(f" Model: {m.name} ({model_dir})")
if not os.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 2
Why
- I couldn't find one
- The sample codes from the sketchfab website are pretty much unuseable
Choices
- The API is designed to be as simple as possible to use
Known issues
-
The 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 stage
Missing APIs
You can submit pull-requests or ask me to implement any feature that you need and might be missing.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sketchfab-0.0.6.tar.gz
.
File metadata
- Download URL: sketchfab-0.0.6.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a2293f7c109a4e5f58ac876f719474c14ddb517277784ab9a597fdede2bb86a |
|
MD5 | c2c5521507bf3b3b6777f9d73718bf4e |
|
BLAKE2b-256 | fdbdd618849e8935e71ceebf886c6c1e352218a090c283eb04f6bffa45cf9849 |
File details
Details for the file sketchfab-0.0.6-py3-none-any.whl
.
File metadata
- Download URL: sketchfab-0.0.6-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cff1467df54b726b6c9b307360f1bce5f13d3f114d8c6a9bfbf90b8f9e3b42fd |
|
MD5 | 54d97f09e1ff6f33c4ca98c03508956a |
|
BLAKE2b-256 | 57352f9c3f8f057472a9dcb2b56f46b134701e73df7fdd13073faf9817d67cc7 |