StickyBridge MCR
Channel: main • Loading status…

CURRENT (ON AIR)

LIVE • --:-- left
00:00 / 00:00

NEXT UP (PREVIEW)

Next Up
Status: -- Action: -- Updated: --
Next Event In: --:--
Title: Loading…
Duration: --
Type: --
Status: Waiting for scheduler
Next Ad Break: --:--

GREENROOM (LIVE SOURCE)

Waiting for source
Source: None connected
State: Standby
Video: --
Use Greenroom to stage hosts, reporters, and remote guests before moving them to Preview or taking them live.
Channel Rundown
Loading schedule…
Timeline Item
Take This Now
Send to Preview
/* === TRUE INGEST ENGINE === */ (function(){ const dz = document.getElementById('sb-ingest-dropzone'); const input = document.getElementById('sb-ingest-file-input'); const log = document.getElementById('sb-ingest-activity'); if(!dz || !input) return; dz.addEventListener('click', ()=> input.click()); dz.addEventListener('dragover', e => { e.preventDefault(); dz.style.background = 'rgba(60,120,255,0.2)'; }); dz.addEventListener('dragleave', ()=>{ dz.style.background = ''; }); dz.addEventListener('drop', e => { e.preventDefault(); dz.style.background = ''; handleIngestFiles(e.dataTransfer.files); }); input.addEventListener('change', ()=>{ handleIngestFiles(input.files); }); function logLine(msg){ const el = document.createElement('div'); el.textContent = msg; log.prepend(el); } function handleIngestFiles(files){ [...files].forEach(file=>{ processFile(file); }); } function processFile(file){ logLine("⏳ Processing: " + file.name); const video = document.createElement('video'); video.preload = "metadata"; video.onloadedmetadata = function(){ const duration = Math.round(video.duration / 60); const asset = { title: file.name.replace(/\.[^/.]+$/, ""), durationMin: duration || 1, type: "program" }; logLine("✔ Parsed: " + asset.title + " (" + asset.durationMin + " min)"); routeAsset(asset); }; video.onerror = function(){ logLine("⚠ Could not read video metadata: " + file.name); }; video.src = URL.createObjectURL(file); } function routeAsset(asset){ if(window.matchIdentity){ const identity = window.matchIdentity(asset); if(identity){ logLine("🎯 Matched Identity: " + identity.name); if(window.runStickyTagForIdentity){ window.runStickyTagForIdentity(identity, asset); logLine("🚀 Auto-placed via StickyTag"); } } else { logLine("⚠ No identity match → queued"); } } } })();