More FE changes
This commit is contained in:
parent
f114ada255
commit
a48eb945e0
48 changed files with 4127 additions and 1751 deletions
32
video/src/preflight.ts
Normal file
32
video/src/preflight.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
||||
import { join } from 'node:path';
|
||||
import { OUTPUT_DIR } from './config.js';
|
||||
import { storyboard } from './storyboard.js';
|
||||
|
||||
/**
|
||||
* Emit the narration script for the synth step.
|
||||
*
|
||||
* Synth (tts/synth.py) runs BEFORE recording, so it needs the full ordered
|
||||
* narration list — text + per-cue gaps — without depending on Playwright,
|
||||
* the dashboard, or auth. Walk the storyboard cues, write a flat manifest,
|
||||
* exit.
|
||||
*
|
||||
* The cue index in this manifest is the source of truth: the runner later
|
||||
* matches storyboard cues to measured durations by index.
|
||||
*/
|
||||
function main(): void {
|
||||
if (!existsSync(OUTPUT_DIR)) mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
|
||||
const items = storyboard.cues.map((cue, cueIndex) => ({
|
||||
cueIndex,
|
||||
text: cue.text.trim(),
|
||||
gapBeforeMs: cue.gapBeforeMs,
|
||||
}));
|
||||
|
||||
const manifest = { items };
|
||||
const path = join(OUTPUT_DIR, 'narration-script.json');
|
||||
writeFileSync(path, JSON.stringify(manifest, null, 2));
|
||||
console.log(`Wrote ${items.length} narration cues to ${path}`);
|
||||
}
|
||||
|
||||
main();
|
||||
Loading…
Add table
Add a link
Reference in a new issue