Live when Zurra3 is online

Zurra3 Movie Night

Static stream room with Twitch embeds, chat commands, catalog links, and MovieBot-to-OBS notes.

Public domain movies Chat voting OBS handoff
Status
Showcase page / local Python automation companion
Last updated
May 2026
Channel twitch.tv/zurra3

Player and chat load below.

Voting !vote title

Chat votes while the current movie plays.

Playback OBS WebSocket

The bot swaps the media source.

Try this demo

Try this in 2 minutes.

Static stream room and workflow notes. MovieBot runs locally with Python, Twitch, and OBS.

  1. Open the room.Check player/chat and fallback links.
  2. Browse the queue.Open Movie Library and search a title.
  3. Copy a command.Use Copy !vote, then return here.
  4. Read the flow.Scan how chat votes connect to OBS.

Stream

Room, chat, and next vote.

Watch Zurra3, keep chat visible on wide screens, browse the catalog, copy !vote, and see how Python controls OBS playback.

Movie list

Public domain movie library.

The full catalog lives on its own page so this room stays focused. Search posters, copy vote commands, and return to chat.

110 movies
1902-1968 release years
!movies !vote movie name !results !time
Open movie library Source IMDb list
110 titles Open the full poster wall

Search the queue and copy vote commands.

Bot at work

How MovieBot runs the night.

The Python/TwitchIO bot scans local files, listens to chat, resolves votes, refreshes/reconnects, and tells OBS which file to play next.

What I built

Stream page and bot explanation.

  • Embedded Twitch player/chat and kept library, source, and case-study paths close.
  • Added fallback links for blocked Twitch embeds.
  • Moved searchable catalog to its own page.
  • Explained folder scanning, chat commands, ties, refresh/reconnects, and OBS handoff.

Uses Twitch embeds/chat, OBS WebSocket context, and movie data; static page structure and presentation are custom.

Production readiness

Showcase surface, not bot runtime.

  • Solid: static room, embed fallbacks, library/source links, and bot workflow summary.
  • Demo-only: playback still depends on local Python, OBS, and the operator.
  • Needs: status panels, embed-health messaging, connection state, queue visibility, and Twitch/OBS checks.
  • Security: keep OAuth/OBS secrets, media paths, and private config out of the page.
Testing and QA notes

Check embeds and bot flow.

  • Automated: Python bot has pytest; this page uses manual/browser smoke checks.
  • Manual: verify embeds, fallbacks, links, bot flow, contact paths, and focus.
  • Device: test desktop, tablet, and narrow mobile stream/chat layout.
  • Edge cases: blocked embeds, offline stream, unavailable chat, slow posters, and blocked clipboard.
  • Limit: no live bot health, queue state, OBS status, or alerts yet.
Deployment and run notes

Static showcase; local bot runtime.

  • Hosted: GitHub Pages page; Python bot runs on the operator machine.
  • Config: no page secrets or env vars; Twitch channel names are constrained in script.
  • External: lazy Twitch player/chat embeds plus Library, GitHub, and case-study links.
  • Local: run python -m http.server 8000 and open /movie-night.html.
  • Secrets: OAuth tokens, OBS passwords, media paths, and logs stay only in bot runtime.
01

Movies are scanned

The bot scans the movie folder for playable files.

02

Chat votes

Viewers use !vote, !results, !currentmovie, and !time.

03

The winner is picked

The bot totals votes, handles ties, and can fall back to random.

04

OBS plays it

OBS WebSocket updates the source, switches scene, and starts the movie.

Long stream details

Built for long sessions: token refresh, chat health checks, and OBS reconnects.

Read the repo

Next step

Browse the queue or source.

Continue to Movie Library, the bot repo, or the case study.