- Neuer Mitarbeiter Komponist (.claude/agents/komponist.md) - Liederbuch: Plan + Lieder 1, 2, 3, 4, 5, 12 (drehbuecher/lieder/) - Suno: feste Stimme aus dem Favoriten, Stilvorlage, ausgewählte Fassungen (suno-auswahl.md) - Suno-Lizenzantwort für Noa in der Mitte (wissen/) - Werkzeuge für Melodie-Skizzen und Leseseite - Laufende Remotion-, Stimmen- und Figurenarbeiten des Tages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018MyLus898ZL9jjJJDvvxa8
14 lines
875 B
TypeScript
14 lines
875 B
TypeScript
// Gibt je Szene einer Folge die Zeitpunkte aller Zeilen aus (zum Planen von Shorts).
|
||
// npx tsx werkzeuge/zeilenzeiten.mts F01
|
||
import path from 'node:path';
|
||
import {pathToFileURL} from 'node:url';
|
||
|
||
const kuerzel = process.argv[2];
|
||
const nummer = kuerzel.replace(/\D/g, '');
|
||
const m = await import(pathToFileURL(path.resolve(`./src/folge${nummer}/Folge${nummer}.tsx`)).href);
|
||
const szenen = m.SZENEN as {name: string; plan: {dauer: number; liste: {id: string; wer?: string; text?: string; start: number; ende: number; frei: number}[]}}[];
|
||
const s = (f: number) => (f / 30).toFixed(1).padStart(6);
|
||
szenen.forEach((sz, i) => {
|
||
console.log(`\n== Szene ${i + 1} „${sz.name}“ Dauer ${s(sz.plan.dauer)} s`);
|
||
for (const l of sz.plan.liste) console.log(`${s(l.start)} –${s(l.ende)} (frei ${s(l.frei)}) ${l.id.padEnd(5)} ${(l.wer ?? '-').padEnd(5)} ${l.text ?? ''}`);
|
||
});
|