Skip to main content

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

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

sketchfab-0.0.6.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

sketchfab-0.0.6-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

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

Hashes for sketchfab-0.0.6.tar.gz
Algorithm Hash digest
SHA256 8a2293f7c109a4e5f58ac876f719474c14ddb517277784ab9a597fdede2bb86a
MD5 c2c5521507bf3b3b6777f9d73718bf4e
BLAKE2b-256 fdbdd618849e8935e71ceebf886c6c1e352218a090c283eb04f6bffa45cf9849

See more details on using hashes here.

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

Hashes for sketchfab-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cff1467df54b726b6c9b307360f1bce5f13d3f114d8c6a9bfbf90b8f9e3b42fd
MD5 54d97f09e1ff6f33c4ca98c03508956a
BLAKE2b-256 57352f9c3f8f057472a9dcb2b56f46b134701e73df7fdd13073faf9817d67cc7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page