Twitch stream event platform with OBS browser source overlay. Features: - Twitch OAuth login (streamer + mod access) - EventSub WebSocket for subs, gift subs, bits, channel points, follows, raids - Chat commands via tmi.js in the overlay - Gap audio — tone plays on new chat message after silence, volume/pitch scale with gap length - Self-hosted media library (upload sounds and videos) - Action configuration — map any event to sound, video, or alert - Per-action cooldowns, test button, enable/disable toggle - Multiple actions per event (all matching actions fire) - Activity log dashboard with EventSub connection status - Layout editor — iframe-based WYSIWYG with drag handles, live style preview - Custom CSS and custom JS injection into overlay - Custom DOM events (bashyoverlay:sub, bashyoverlay:raid, etc.) for custom JS hooks - deploy.sh — one-shot setup and launch script Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
959 B
HTML
35 lines
959 B
HTML
{% extends "base.html" %}
|
|
{% block title %}Media — BashyOverlay{% endblock %}
|
|
{% block content %}
|
|
<hgroup>
|
|
<h1>Media</h1>
|
|
<p>Upload sounds and videos for your actions.</p>
|
|
</hgroup>
|
|
|
|
<section>
|
|
<h2>Upload</h2>
|
|
<form hx-post="/media"
|
|
hx-target="#media-list"
|
|
hx-swap="beforeend"
|
|
hx-encoding="multipart/form-data"
|
|
hx-on::after-request="this.reset()">
|
|
<label>
|
|
File <small>(mp3, ogg, wav, m4a, mp4, webm)</small>
|
|
<input type="file" name="file" accept="audio/*,video/*" required>
|
|
</label>
|
|
<button type="submit">Upload</button>
|
|
</form>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Library</h2>
|
|
<div id="media-list" class="media-grid">
|
|
{% for file in files %}
|
|
{% include "partials/media_item.html" %}
|
|
{% endfor %}
|
|
{% if not files %}
|
|
<p><em>No files uploaded yet.</em></p>
|
|
{% endif %}
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|