Skills › HyperFrames › media-use › words.mjs
words.mjs
18 lines · skills/media-use/scripts/lib/words.mjs at a595755
1export function normalizeWords(input) {
2 const raw = Array.isArray(input) ? input : Array.isArray(input?.words) ? input.words : [];
3 return raw
4 .map((w, index) => {
5 const text = String(w?.text ?? w?.word ?? "").trim();
6 const start = Number(w?.start);
7 const end = Number(w?.end);
8 if (!text || !Number.isFinite(start) || !Number.isFinite(end)) return null;
9 return { id: w?.id ?? `w${index}`, text, start, end };
10 })
11 .filter(Boolean);
12}
14export function wordListsFromMediaMeta(input) {
15 if (Array.isArray(input) || Array.isArray(input?.words)) return [normalizeWords(input)];
16 if (!Array.isArray(input?.voices)) return [];
17 return input.voices.map((voice) => normalizeWords(voice));
18}