youtube/remotion/werkzeuge/zeilenzeiten.mts
Lara 69990b6c0f Stand 03.11.2026: Komponist, sechs Lieder-Entwürfe, Suno-Stimme und Auswahl, Remotion-Arbeiten
- 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
2026-11-03 21:29:39 +01:00

14 lines
875 B
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 ?? ''}`);
});