Skip to main content

Vestaboard client library

Project description

Vesta

Vesta is a Vestaboard client library for Python. It provides API clients and character encoding utilities.

Installation

Vesta requires Python 3.10 or later and has no other runtime dependencies. It can be installed via PyPI.

$ python -m pip install vesta

Usage

API Clients

Read / Write API

ReadWriteClient provides a client interface for interacting with a Vestaboard using the Read / Write API.

Note that Vestaboard owners must first obtain their Read / Write API key by enabling the Vestaboard's Read / Write API via the Settings section of the mobile app or from the Developer section of the web app.

import vesta
rw_client = vesta.ReadWriteClient("read_write_key")

# Once enabled, you can write and read messages:
message = vesta.encode_text("{67} Hello, World {68}")
assert rw_client.write_message(message)
assert rw_client.read_message() == message

Subscription API

SubscriptionClient provides a client interface for interacting with multiple Vestaboards using the Subscription API.

Note that an API secret and key is required to get subscriptions or send messages. These credentials can be created from the Developer section of the web app.

Messages can be posted as either text strings or two-dimensional arrays of character codes representing the exact positions of characters on the board.

If text is specified, the lines will be centered horizontally and vertically. Character codes will be inferred for alphanumeric and punctuation characters, or they can be explicitly specified using curly braces containing the character code (such as {5} or {65}).

import vesta
subscription_client = vesta.SubscriptionClient("api_key", "api_secret")

# List subscriptions and send them messages:
subscriptions = subscription_client.get_subscriptions()
for subscription in subscriptions:
    subscription_client.send_message(subscription["id"], "{67} Hello, World {68}")

Local API

LocalClient provides a client interface for interacting with a Vestaboard over the local network using Vestaboard's Local API.

Note that Vestaboard owners must first request a Local API enablement token in order to use the Local API.

import vesta
local_client = vesta.LocalClient()

# The Vestaboard's Local API must be enabled to get its Local API key. After
# you've done this once, you can save the key somewhere safe and pass it
# directly to LocalClient() for future client initializations.
local_api_key = local_client.enable(ENABLEMENT_TOKEN)
# e.g. local_client = LocalClient(local_api_key)
assert local_client.enabled

# Once enabled, you can write and read messages:
message = vesta.encode_text("{67} Hello, World {68}")
assert local_client.write_message(message)
assert local_client.read_message() == message

VBML API

VBMLClient provides a client interface for Vestaboard's VBML (Vestaboard Markup Language) API.

import vesta

component = Component(
    "Vestaboard Markup Language",
    justify="center",
    align="center",
    width=22,
    height=6,
)

vbml_client = vesta.VBMLClient()
vesta.pprint(vbml_client.compose([component]))

Platform Client

Client provides a client interface for interacting with the deprecated Vestaboard Platform API.

This is the original Vestaboard Platform API. It is deprecated and has been superseded by the other APIs listed above. In particular, Vestaboard encourages users of the Platform API to switch to the Subscription API, which offers nearly identical functionality.

Character Encoding

All Vestaboard characters (letters, numbers, symbols, and colors) are encoded as integer character codes. Vesta includes some useful routines for working with these character codes.

encode() encodes a string as a list of character codes. In addition to printable characters, the string can contain character code sequences inside curly braces, such as {5} or {65}.

>>> vesta.encode("{67} Hello, World {68}")
[67, 0, 8, 5, 12, 12, 15, 55, 0, 23, 15, 18, 12, 4, 0, 68]

encode_row() encodes a string as a row of character codes. It builds on encode() by providing alignment control.

>>> vesta.encode_row("{67} Hello, World {68}", align="center")
[0, 0, 0, 67, 0, 8, 5, 12, 12, 15, 55, 0, 23, 15, 18, 12, 4, 0, 68, 0, 0, 0]

encode_text() encodes a string of text into rows of character codes, further building on encode() and encode_row() with the addition of alignment, margin control, and line breaks.

>>> encode_text("multiple\nlines\nof\ntext", align="center", valign="middle")
[
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 13, 21, 12, 20, 9, 16, 12, 5, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 14, 5, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 5, 24, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
]

Lastly, pprint() can be used to pretty-print encoded characters to the console, which can be useful during development.

>>> vesta.pprint([0, 0, 0, 67, 0, 8, 5, 12, 12, 15, 55, 0, 23, 15, 18, 12, 4, 0, 68, 0, 0, 0])
| | | |◼︎| |H|E|L|L|O|,| |W|O|R|L|D| |◼︎| | | |

Examples

License

This project is licensed under the terms of the MIT license.

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

vesta-0.13.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vesta-0.13.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file vesta-0.13.0.tar.gz.

File metadata

  • Download URL: vesta-0.13.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vesta-0.13.0.tar.gz
Algorithm Hash digest
SHA256 ba71b80081eda77a8d697c1007873142be8f97c11d7f43cfb55cf2d56daad5fa
MD5 a2b0b13d1d48baa7e06ba8231107763c
BLAKE2b-256 a01a990cbde5a58f7b2ca8ad33268aa75d42d79cd7022a0456e8f7c94f896858

See more details on using hashes here.

File details

Details for the file vesta-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: vesta-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vesta-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1e8d4c54bff8742ae6de83819027e76bf4ea3f0eb09e8e2a72234272aa4aa54
MD5 76416a05e41c6df98b30228e8ba7d98e
BLAKE2b-256 ec7d264ecf982094863694f7a0ce3bbf99d8fccb0d234c3de56b70a8675535a9

See more details on using hashes here.

Supported by

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