sesiweb is a Python module used as a synchronous driver for the SideFX Web API. It provides a simple interface to interact with the API and obtain data about Houdini product builds.
Inputs are validated with Pydantic, and methods in sesiweb provide additional lookup functionality, exceptions, and models.
You can install sesiweb via pip:
pip install --upgrade sesiweb
Note: sesiweb is intended for Python 3, as it supports several modern Python features.
To use sesiweb, you need to provide your SideFX API credentials:
from sesiweb import SesiWeb
sesi_secret = "your_secret_key"
sesi_id = "your_client_id"
sw = SesiWeb(sesi_secret, sesi_id)
Once you have created an instance of SesiWeb, you can call its methods to retrieve data. For example, get_latest_builds
will return a list of the DailyBuild
object:
# Get the most recent Houdini product builds
build = {"product": "houdini", "platform": "linux", "version": "19.5"}
latest_builds = sw.get_latest_builds(build)
print(latest_builds)
This will return:
[DailyBuild(product='houdini', platform='linux_x86_64_gcc9.3', version='19.5', build='569', date='2023/03/29', release='gold', status='good'), DailyBuild(...
You can also filter builds with the prodfilter
arg:
buildfilter = {"status": "good", "release": "gold"}
latest_builds = sw.get_latest_builds(
prodinfo=build,
prodfilter=buildfilter
)
For more information on the SideFX Web API and the returned results you can filter by, refer to the SideFX Web API documentation.
Using sesiweb and Pydantic, you can also transform a DailyBuild
object into a ProductBuild
object, which is a required input for acquiring a download URL.
In the script below, the single latest daily development build (irrespective of version number) is acquired using get_latest_build
. get_build_download
is then used to return the download metadata for that build:
from sesiweb import SesiWeb
from sesiweb.model.service import ProductBuild
sesi_secret = "your_secret_key"
sesi_id = "your_client_id"
sw = SesiWeb(sesi_secret, sesi_id)
# Get the most recent Houdini product builds
build = {"product": "houdini", "platform": "linux"}
# Get the latest Houdini build
build = sw.get_latest_build(prodinfo=build, only_production=False)
# Get the download URL, filename and hash of the build
build_dl = sw.get_build_download(
prodinfo=ProductBuild(**build.dict())
)
print(build_dl)
This will return a BuildDownloadModel
object containing a download URL, build filename, and hash:
download_url=AnyUrl('https://gjvnth38g.cloudfront.net/download/download-build/456223/cdn/?Expires=166636236...
For an example of using this metadata in a purpose suitable for a production environment, see autobuild.py in Houdini-Docker; Where sesiweb build data is used to construct a Docker image using a custom Houdini installation process.
sesiweb is licensed under the MIT License. See LICENSE for more information.