18 lines
1.8 KiB
JavaScript
18 lines
1.8 KiB
JavaScript
const fs=require('fs'),vm=require('vm');
|
|
const ts=require('../huobao-source/backend/node_modules/typescript');
|
|
const source=fs.readFileSync('huobao-source/backend/src/services/english-video-prompt.ts','utf8');
|
|
const part=source.slice(source.indexOf('const han ='),source.indexOf('export async function promptAssetNames'))+source.slice(source.indexOf('// Do not normalize'),source.indexOf('export async function translateVisualPrompt'));
|
|
const ctx={exports:{},console};vm.runInNewContext(ts.transpileModule(part,{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2022}}).outputText,ctx);
|
|
const utils={exports:{}};vm.runInNewContext(ts.transpileModule(fs.readFileSync('huobao-source/backend/src/utils/storyboard-generated-prompt.ts','utf8'),{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2022}}).outputText,utils);
|
|
for(const folder of process.argv.slice(2)){
|
|
const fixture=JSON.parse(fs.readFileSync(folder+'/drafts.json','utf8'));
|
|
for(const [i,call] of fixture.calls.entries())for(const shot of call.storyboards||[]){
|
|
const norm=p=>utils.exports.normalizeDraftAssets(utils.exports.normalizeDraftVoices(p,fixture.characters,shot.character_ids||[]),fixture.names);
|
|
try{ctx.exports.validateEnglishPrompt(norm(shot.video_prompt),norm(shot.video_prompt_en)||'',fixture.names);console.log(JSON.stringify({folder,call:i,shot:shot.shot_number,valid:true}));}
|
|
catch(e){
|
|
const from=ctx.exports.protectPrompt(norm(shot.video_prompt)||'',fixture.names),to=ctx.exports.protectPrompt(norm(shot.video_prompt_en)||'',fixture.names);
|
|
console.log(JSON.stringify({folder,call:i,shot:shot.shot_number,error:e.message,unprotectedHan:(to.text.match(/\p{Script=Han}+/gu)||[]),missing:from.literals.filter(x=>!to.literals.includes(x)),extra:to.literals.filter(x=>!from.literals.includes(x))}));
|
|
}
|
|
}
|
|
}
|