Files
ai-drama-platform/scripts/write-sample-exports.mjs

43 lines
1.6 KiB
JavaScript

import { mkdir, writeFile } from "node:fs/promises";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import { sampleProject } from "../src/data/sampleProject.js";
import {
buildEditList,
buildPromptPack,
buildShotList,
buildVoiceTable
} from "../src/lib/exporters.js";
import { projectQa } from "../src/lib/qa.js";
const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
const out = resolve(root, "exports/project-template");
const files = [
["bible/series-bible.json", sampleProject.series],
["shots/shot-list.json", buildShotList(sampleProject)],
["shots/prompt-pack.json", buildPromptPack(sampleProject)],
["voices/voice-lines.json", buildVoiceTable(sampleProject)],
["qa/qa-results.json", projectQa(sampleProject)],
["edit/edit-list.json", buildEditList(sampleProject)],
["characters/character-locks.json", sampleProject.characters],
["locations/location-locks.json", sampleProject.locations],
["props/prop-locks.json", sampleProject.props],
["final-video/delivery-manifest.json", {
schema: "ai-drama-platform.delivery-manifest.v1",
episodeId: sampleProject.episode.id,
expectedFinal: "final-video/E01_别往树下跑_master.mp4",
sourceEditList: "edit/edit-list.json",
subtitles: "edit/E01_别往树下跑.zh-CN.srt",
audioPolicy: "固定 TTS 声线替换随机原生音轨;环境声可独立保留。"
}]
];
for (const [name, value] of files) {
const target = resolve(out, name);
await mkdir(dirname(target), { recursive: true });
await writeFile(target, `${JSON.stringify(value, null, 2)}\n`, "utf8");
}
console.log(`sample exports written to ${out}`);