#!/usr/bin/env python3
from pathlib import Path
import json,re
base=Path('/data/video-pipeline/Channel-Loi-Co-Nhan')
project_id='139-Biet-Giu-Mot-Goc-Yen-Trong-Nha-Phuc-Se-Co-Noi-Ve'
topic='Biết giữ một góc yên trong nhà, phúc sẽ có nơi về'
title=topic+' | Lời cổ nhân dạy'
p=base/'project'/project_id
p.mkdir(parents=True,exist_ok=True)
for d in ['script','images/scenes','audio/voice_segments','subtitles','output/thumbnails','output/intro','logs','render_onepass']:(p/d).mkdir(parents=True,exist_ok=True)
scenes=[
('scene_001','Cổ nhân dạy, nhà dù nhỏ cũng nên giữ một góc yên, để phúc có nơi trở về. Cửa có thể hẹp, vách có thể cũ, nhưng nếu trong nhà còn chỗ cho lời mềm, lòng người sẽ bớt phiêu bạt.','góc nhà cổ yên tĩnh với đèn dầu và mâm trà đơn sơ'),
('scene_002','Ở xóm thợ rèn có gia đình ông Tịnh. Tiếng búa ngoài lò đã ồn, vào nhà lại thêm tiếng trách móc. Vợ chồng, con cái, ai cũng nói phần mệt của mình, không ai nghe phần mệt của người khác.','gia đình thợ rèn trong nhà cổ, ai cũng quay mặt căng thẳng'),
('scene_003','Mỗi tối, bữa cơm chưa kịp dọn đã có chuyện hơn thua. Người cha than con lười, người mẹ trách chồng nóng, đứa trẻ đáp lại bằng im lặng. Khói bếp bay lên mà chẳng làm căn nhà ấm.','mâm cơm lạnh dưới khói bếp, gia đình im lặng'),
('scene_004','Một ngày, người bà từ quê đến. Bà không giảng đạo lý dài, chỉ quét sạch góc hiên nhỏ, đặt một chiếc ghế tre, một ấm nước, rồi bảo ai còn giận thì ra đó ngồi trước khi nói.','bà già quét góc hiên, đặt ghế tre và ấm nước'),
('scene_005','Ban đầu mọi người cười, cho rằng một góc hiên nhỏ làm sao đổi được nếp nhà. Nhưng tối ấy, khi người cha định quát con, ông nhìn thấy chiếc ghế tre và tự nhiên bước ra ngồi.','người cha dừng trước khi quát, nhìn ghế tre ngoài hiên'),
('scene_006','Gió ngoài hiên thổi qua chậm rãi. Ông uống một chén nước, nghe tiếng búa xa dần trong tai. Cơn giận vẫn còn, nhưng không còn đứng ngay đầu lưỡi như trước.','người cha ngồi ngoài hiên uống nước, vẻ lắng xuống'),
('scene_007','Khi quay vào, ông chỉ hỏi con vì sao chưa làm xong việc. Đứa trẻ lần đầu dám nói rằng tay bị phồng vì phụ lò rèn cả chiều. Câu nói nhỏ ấy mở ra điều cả nhà chưa từng nghe.','đứa trẻ đưa bàn tay phồng cho cha xem bên ánh đèn'),
('scene_008','Người mẹ thấy vậy cũng bớt lời trách. Hôm sau, trước khi than chồng, bà ra góc hiên ngồi một lát. Nhìn cây cau ngoài sân, bà nhớ rằng người đàn ông kia cũng đã gánh nhiều ngày nặng.','người mẹ ngồi góc hiên nhìn cây cau trong sân'),
('scene_009','Dần dần, góc hiên ấy thành nơi giữ lửa cho nhà. Ai nóng thì ra đó, ai tủi thì ra đó, ai muốn nói lời nặng cũng phải đi qua một chén nước nguội trước đã.','góc hiên yên bình, ấm nước và ghế tre dưới trăng'),
('scene_010','Nhà ông Tịnh không giàu thêm ngay, lò rèn vẫn đỏ lửa, tay người vẫn chai. Nhưng trong bữa cơm, người ta bắt đầu hỏi nhau một câu tử tế, và biết chờ câu trả lời.','gia đình thợ rèn ăn cơm ấm hơn, ánh lửa dịu'),
('scene_011','Người hàng xóm ngạc nhiên, hỏi bà già dùng phép gì. Bà cười, nói chẳng có phép lạ, chỉ là trong nhà phải có một chỗ để cơn giận ngồi xuống trước khi bước vào mâm cơm.','bà già cười hiền bên hàng xóm ở cổng tre'),
('scene_012','Đời người không sợ nhà chật, chỉ sợ lòng không có chỗ lui. Khi ai cũng muốn nói ngay, thắng ngay, hơn ngay, thì mái nhà rộng mấy cũng hóa thành sân chợ.','mái nhà rộng nhưng người tranh lời, chuyển sang hình ảnh sân chợ'),
('scene_013','Một góc yên có thể là hiên nhỏ, bậc cửa, chén nước, hay một hơi thở chậm. Quan trọng không phải chỗ ấy ở đâu, mà là trong lòng còn biết dừng để thương nhau.','người ngồi bên bậc cửa thở chậm, ánh sáng ấm'),
('scene_014','Vậy nên, hãy giữ trong nhà một góc yên cho lời dữ lắng xuống. Nơi ấy không cần rộng, chỉ cần đủ để lòng người quay lại. Có chỗ cho hòa khí, phúc sẽ có đường về.','góc nhà sáng ấm, gia đình quây quần, phúc khí tượng trưng như ánh sáng'),
]
style='Vertical 9:16, cổ phong giấy vàng, aged parchment, ink-wash cinematic historical Vietnamese moral story scene, muted ochre brown sepia charcoal, dignified calm mood, one clear symbolic scene: '
neg=' Negative prompt: no modern objects, no modern clothing, no cars, no motorbikes, no phones, no electric lights, no plastic, no Western faces, no wrong culture, no fantasy, no sci-fi, no neon, no glossy 3D, no anime, no cartoon, no model sheet, no watermark, no logo, no text.'
objs=[{'scene_id':sid,'narration':nar,'image_prompt':style+vis+'.'+neg,'visual_prompt':vis} for sid,nar,vis in scenes]
(p/'script/scenes.json').write_text(json.dumps({'title':title,'metadata':{'project_id':project_id,'topic_sentence':topic,'thumbnail_symbol':'quiet corner of an ancient home with bamboo chair and warm oil lamp'},'scenes':objs},ensure_ascii=False,indent=2),encoding='utf-8')
words=sum(len(re.findall(r"[\wÀ-ỹ]+",nar,re.UNICODE)) for _,nar,_ in scenes)
(p/'script/scenes_validation.json').write_text(json.dumps({'passed':620<=words<=660,'scene_count':14,'word_count':words},ensure_ascii=False,indent=2),encoding='utf-8')
steps=[{'step':i,'status':'completed' if i<=2 else 'pending'} for i in range(1,15)]
(p/'checklist_14_steps.json').write_text(json.dumps({'project_id':project_id,'topic_sentence':topic,'title':title,'target_words':'620-660','target_scenes':14,'channel':'Loi Co Nhan','workflow_version':'v3-current-short-ai-script','current_step':3,'steps':steps},ensure_ascii=False,indent=2),encoding='utf-8')
(p/'checklist_14_steps.md').write_text(f'# Checklist 14 Steps\n\nProject ID: {project_id}  \nTopic: {topic}  \nTitle: {title}  \nTarget: 620-660 words, about 14 scenes\n\n- Step 01: Completed\n- Step 02: Completed (14 scenes, {words} words)\n'+'\n'.join([f'- Step {i:02}: Pending' for i in range(3,15)])+'\n',encoding='utf-8')
src=base/'project/138-Giu-Mot-Nen-Nhang-Trong-Long-Hon-Dot-Nghin-Nen-Ngoai-Cua'
for name in ['scripts_complete_short_project.py','scripts_worker_rebuild_strict.py','scripts_worker_rebuild_yt.py','scripts_run_asr_and_build_subtitles.py']:
 txt=(src/name).read_text(encoding='utf-8').replace(str(src),str(p));(p/name).write_text(txt,encoding='utf-8')
print(p,words)
