feat: 完成前三卷与动漫真人双版本制作包
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
"""将内置图像工具的结果复制进项目,并逐项保存生成回执。"""
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import struct
|
||||
|
||||
ROOT=Path(__file__).resolve().parent.parent
|
||||
LIVE=ROOT/'08_真人AI短剧'
|
||||
|
||||
parser=argparse.ArgumentParser()
|
||||
parser.add_argument('--id',required=True)
|
||||
parser.add_argument('--source',required=True)
|
||||
args=parser.parse_args()
|
||||
assets=json.loads((LIVE/'02_资产/全部资产任务.json').read_text(encoding='utf8'))
|
||||
asset=next(a for a in assets if a['id']==args.id)
|
||||
src=Path(args.source).resolve(strict=True)
|
||||
dest=(LIVE/asset['path']).resolve()
|
||||
if not dest.is_relative_to(LIVE.resolve()):raise ValueError('Destination outside live workspace')
|
||||
dest.parent.mkdir(parents=True,exist_ok=True)
|
||||
if dest.exists() and dest.read_bytes()!=src.read_bytes():raise FileExistsError(dest)
|
||||
shutil.copy2(src,dest)
|
||||
data=dest.read_bytes()
|
||||
size=list(struct.unpack('>II',data[16:24])) if data[:8]==b'\x89PNG\r\n\x1a\n' else None
|
||||
prompt_file=LIVE/'04_生成与后期/逐项出图提示词'/(asset['id']+'.txt')
|
||||
actual_prompt=prompt_file.read_text(encoding='utf8').rstrip() if prompt_file.exists() else asset['prompt']
|
||||
receipt={'id':asset['id'],'name':asset['name'],'kind':asset['kind'],'path':asset['path'],'source':str(src),'size':size,'status':'REVIEW','method':'built-in image_gen','prompt':actual_prompt,'approved':False}
|
||||
out=LIVE/'02_资产/生成回执'/(asset['id']+'.json');out.parent.mkdir(parents=True,exist_ok=True)
|
||||
out.write_text(json.dumps(receipt,ensure_ascii=False,indent=2)+'\n',encoding='utf8')
|
||||
print(json.dumps({'id':asset['id'],'path':str(dest),'size':size},ensure_ascii=False))
|
||||
Reference in New Issue
Block a user