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.5.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

sketchfab-0.0.5-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file sketchfab-0.0.5.tar.gz.

File metadata

  • Download URL: sketchfab-0.0.5.tar.gz
  • Upload date:
  • Size: 7.9 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.5.tar.gz
Algorithm Hash digest
SHA256 82c0dac2c1e4c890dfc32853fc15be54a9b315d293070d3df08fa59ffdd6f54e
MD5 14cf9a918e8bf3a5401f471ebc989513
BLAKE2b-256 709f3231ccfe949886f75069bd1ca7bce2485954a48144ded40b2e4f802fbc3b

See more details on using hashes here.

File details

Details for the file sketchfab-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: sketchfab-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.5 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 27c2e9a66d4275715c23bb5d4c4d239fd0221743911a2ef2a0b98486b326255d
MD5 a13915cc261abd0bd915e5501a80de7b
BLAKE2b-256 98e042b031e5a9cd13d77e6321ef92f6d6ebffa058f4f26c5ab72e2c08b38359

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