43 lines
1.6 KiB
JavaScript
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}`);
|