pytellybox
An async Python client for Tellybox, the self-hosted app that lets young kids pick parent-approved videos for the TV within a daily time allowance. It is the library behind the Home Assistant integration.
- Admin API (bearer token from Tellybox's Integrations page): live state and its event stream, and the parent overrides (extra time, unlimited today, block today, stop now, clear today) for everyone or for chosen kids.
- Kid API (no token): browse shows and episodes, play, pause and resume. A play is refused when someone is out of time, because Tellybox's timer always decides.
import aiohttp
from pytellybox import TellyboxClient
async with aiohttp.ClientSession() as session:
tellybox = TellyboxClient("https://tellybox.example", "tbx_…", session)
state = await tellybox.state()
for kid in state.profiles:
print(kid.name, kid.remaining_s)
await tellybox.add_time(15, profile_ids=[1])
async for state in tellybox.events(): # the current state first, then one per change
print(state.group.remaining_s)
For development without a Tellybox, run the mock server: python -m pytellybox.mock --port 8099 --token tbx_dev (add --read-token tbx_ro for a read-only token). Tests can use MockTellybox from pytellybox.mock with aiohttp's TestServer.
The API contract is Tellybox's docs/admin-api.md and docs/kid-api.md. Tellybox is for the LAN and Tailscale only; use HTTPS behind your reverse proxy, and keep tokens out of logs.
Development
python3 -m venv .venv && .venv/bin/pip install -e '.[test]'
.venv/bin/python -m pytest -q
Releases are published to PyPI by GitHub Actions when a v* tag is pushed (trusted publishing).
Licensed under Apache-2.0.
Metadata
Release files for pytellybox 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytellybox-0.1.0.tar.gz | 23.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytellybox-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.1 kB
Release files / pytellybox-0.1.0.tar.gz
| Download URL | pytellybox-0.1.0.tar.gz |
|---|---|
| Size | 23.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb5846f40bf4d008bb94d367969b19755ffdde8a2e01f7abe34b54d10854d08d
|
|
BLAKE2b-256 checksum How to use checksums |
555275b23fe7a7510ef9ff996f54cd0c14d8466a3b1864d442688eda8243b034
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / pytellybox-0.1.0-py3-none-any.whl
| Download URL | pytellybox-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8447a9bdddf33eae60fd15f19b146c1711a628ef7c61e3c013d15e78f744f36c
|
|
BLAKE2b-256 checksum How to use checksums |
d5d74cad8e6e007f5f9be5fc96d2eaabf252df1a79a28aee58cae6c4d02bc383
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency log