← back to Rentv Ad Engine
wire as-aired ad timeline into dossier (per-airing ▶ deep-link + spoken copy) + add CRE Talk producer page (/Producers/View/618) source link to header (Steve-directed)
db15224e10397d449d5f11288548ac3ffd14e671 · 2026-08-07 11:12:21 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
Diff
commit db15224e10397d449d5f11288548ac3ffd14e671
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Aug 7 11:12:21 2026 -0700
wire as-aired ad timeline into dossier (per-airing ▶ deep-link + spoken copy) + add CRE Talk producer page (/Producers/View/618) source link to header (Steve-directed)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
public/index.html | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/public/index.html b/public/index.html
index ecc24f4..ddcbc7c 100644
--- a/public/index.html
+++ b/public/index.html
@@ -71,6 +71,7 @@
<div style="margin-left:auto;display:flex;gap:10px;font-size:12px">
<a href="https://soundcloud.com/rentvnews" target="_blank" rel="noopener" title="RENTV podcast on SoundCloud">🎧 Podcast</a>
<a href="https://www.rentvreview.com" target="_blank" rel="noopener" title="The REview — RENTV's authoritative episode archive">📺 The REview</a>
+ <a href="https://www.rentvreview.com/Producers/View/618" target="_blank" rel="noopener" title="RENTV CRE Talk — all episodes + official sponsors on The REview">🎬 CRE Talk episodes</a>
</div>
</header>
@@ -101,7 +102,7 @@ const setLS=(k,v)=>localStorage.setItem("rae_"+k,JSON.stringify(v));
const siteURL=s=>/^https?:/.test(s)?s:"https://"+s;
const telURL=p=>"tel:"+String(p).replace(/[^\d+]/g,"");
-let DATA={advertisers:[],guests:[],videos:[],emails:[],podcasts:[]}, FRAMES={}, SYN={}, RV={}, ADCLIPS={};
+let DATA={advertisers:[],guests:[],videos:[],emails:[],podcasts:[]}, FRAMES={}, SYN={}, RV={}, ADCLIPS={}, AIRINGS={};
let view=LS("view","advertisers"), mode=LS("mode","cards");
const SORTS={
@@ -131,6 +132,7 @@ async function boot(){
try{SYN=await fetch("api/synopses").then(r=>r.json())}catch{SYN={}}
try{DATA.emails=(await fetch("api/emails").then(r=>r.json())).emails||[]}catch{DATA.emails=[]}
try{RV=await fetch("api/rentvreview").then(r=>r.json())}catch{RV={}}
+ try{(await fetch("api/adairings").then(r=>r.json())).airings.forEach(a=>{(AIRINGS[a.episode_id]=AIRINGS[a.episode_id]||[]).push(a)})}catch{AIRINGS={}}
try{DATA.podcasts=(await fetch("api/soundcloud").then(r=>r.json())).episodes||[]}catch{DATA.podcasts=[]}
try{(await fetch("api/adclips").then(r=>r.json())).clips||[]}catch{}
$("#stat").innerHTML=`<b>${s.advertisers}</b> advertisers · <b>${s.guests}</b> guests · <b>${s.videos_rich}</b>/${s.videos_total} videos transcribed`;
@@ -405,6 +407,12 @@ window.openEpisode=id=>{
${RV[id].guest_note?`<div class="kv">🎤 ${esc(RV[id].guest_note)}</div>`:""}
${(RV[id].sponsors||[]).length?`<div class="row"><span class="kv">Official sponsors:</span>${RV[id].sponsors.map(s=>`<span class="chip" style="color:var(--gold);border-color:#3a3320">${esc(s)}</span>`).join("")}</div>`:""}
</div>`:""}
+ ${(AIRINGS[id]||[]).length?`<h3>As-aired ad timeline (${AIRINGS[id].length})</h3>
+ <div class="muted" style="margin:-4px 0 6px">Exact second each sponsor spot aired — click ▶ to jump to that moment.</div>
+ ${AIRINGS[id].slice().sort((a,b)=>a.start-b.start).map(x=>`<div style="margin:4px 0">
+ <a href="${esc(x.deeplink)}" target="_blank" rel="noopener" class="mailbtn" style="text-decoration:none">▶ ${esc(x.timecode)}</a>
+ <b>${esc(x.advertiser)}</b>
+ <span class="muted"> — "${esc((x.spoken_copy||'').slice(0,110))}…"</span></div>`).join("")}`:""}
<h3>Advertisers in this episode (${ads.length})</h3>
${ads.length?ads.map(a=>`<div class="row" style="margin:4px 0"><b>${esc(a.name)}</b> <span class="badge cat">${esc(a.category)}</span>
${(a.websites||[]).map(w=>`<a href="${siteURL(esc(w))}" target="_blank" rel="noopener">${esc(w)}</a>`).join(" ")}
← 4864f38 deep-frame build: PROVEN real-browser frame capture (postMes
·
back to Rentv Ad Engine
·
auto-data-snapshot: 2026-08-07T11:14:36 (8 data files) — dat 2ed2dbe →