2026-07-24 17:44:17 +01:00
|
|
|
# ari's stream tools
|
|
|
|
|
|
|
|
|
|
handy, custom-built tools and utilities for my livestreams!
|
|
|
|
|
|
2026-07-24 17:54:07 +01:00
|
|
|
## setup
|
|
|
|
|
|
|
|
|
|
run once, then edit the generated config files to taste:
|
|
|
|
|
- **linux:** `~/.config/ari-stream-tools/config.toml`
|
|
|
|
|
- **macOS:** `~/Library/Application Support/ari-stream-tools/config.toml`
|
|
|
|
|
- **windows:** `%APPDATA%\ari-stream-tools\config.toml`
|
|
|
|
|
|
|
|
|
|
incompatible or unconfigured services will simply not run: you're welcome to use only the services you need and/or care about.
|
|
|
|
|
|
|
|
|
|
## endpoints
|
|
|
|
|
|
|
|
|
|
### learning
|
2026-07-24 17:44:17 +01:00
|
|
|
|
|
|
|
|
endpoints and views for "ari is learning!" streams.
|
|
|
|
|
|
|
|
|
|
- **`GET /learning/sse`**: server-sent events:
|
|
|
|
|
- `title-update`: emits when the stream title is updated
|
|
|
|
|
- **`POST /learning/title`**: update the current stream title
|
|
|
|
|
- **`GET /learning/hello`**: intro view
|
|
|
|
|
- **`GET /learning/brb`**: "be right back!" view
|
|
|
|
|
- **`GET /learning/bye`**: stream ending view
|
|
|
|
|
|
2026-07-24 17:54:07 +01:00
|
|
|
### music
|
2026-07-24 17:44:17 +01:00
|
|
|
|
|
|
|
|
endpoints for a music status indicator.
|
|
|
|
|
|
|
|
|
|
- **`GET /music/sse`**: server-sent events:
|
|
|
|
|
- `music`: emits when the currently playing track changes
|
|
|
|
|
- example: `{"title":"Untitled Track","artist":"Unknown Artist"}`
|
|
|
|
|
- `music-state`: emits when the playing state changes
|
|
|
|
|
- example: `{"playing":true}`
|
|
|
|
|
- **`GET /music/artwork`**: serves the currently playing track artwork
|
|
|
|
|
- **`GET /music`**: music status indicator
|
|
|
|
|
|
2026-07-24 17:54:07 +01:00
|
|
|
### twitch
|
2026-07-24 17:44:17 +01:00
|
|
|
|
|
|
|
|
endpoints for twitch events and labels.
|
|
|
|
|
|
|
|
|
|
- **`GET /login`**: redirects to twitch login
|
|
|
|
|
- **`GET /auth`**: twitch auth callback
|
|
|
|
|
- **`GET /sse/*`**: server-sent events:
|
|
|
|
|
- **labels**: emits once at start, and every time an update occurs.
|
|
|
|
|
- `update` events contain a plain text username.
|
|
|
|
|
- `/sse/labels/latest-follower`
|
|
|
|
|
- `/sse/labels/latest-subscriber`
|
|
|
|
|
- `/sse/labels/latest-cheer`
|
|
|
|
|
- **`GET /labels/<label>`**: serves a twitch label view.
|
|
|
|
|
- supported `label`s:
|
|
|
|
|
- `latest-follower`
|
|
|
|
|
- `latest-subscriber`
|
|
|
|
|
- `latest-cheer`
|