#!/usr/bin/env python3
from pathlib import Path
import json,re
base=Path('/data/video-pipeline/Channel-Loi-Co-Nhan')
project_id='134-Nuoc-Duc-Dung-Voi-Khuay-Long-Roi-Se-Trong'
topic='Nước đục đừng vội khuấy, lòng rồi sẽ trong'
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, nước đục đừng vội khuấy, lòng rồi sẽ trong. Khi giận dữ nổi lên như bùn dưới đáy ao, càng quẫy mạnh chỉ càng làm mắt mình mờ, lời mình nặng, và người thân thêm xa.','ao nước đục trong sân làng, người áo nâu đứng lặng bên bờ'),
('scene_002','Ở làng ven núi có người hái thuốc tên Thuận. Ông vốn hiền, nhưng hễ bị nghi oan là nóng mặt, lập tức nói cho rõ hơn thua. Nhiều lần đúng lý, ông vẫn mất tình.','người hái thuốc mang gùi lá thuốc, vẻ nóng nảy trước dân làng'),
('scene_003','Một hôm, có người trong chợ bảo thuốc của ông trộn lá xấu. Thuận nghe xong liền nổi giận, đổ cả gùi thuốc xuống đất, bắt người kia xin lỗi trước mặt đông người.','chợ quê cổ, gùi thuốc đổ xuống đất, mọi người nhìn'),
('scene_004','Người kia càng cãi, Thuận càng lớn tiếng. Cuối cùng chuyện nhỏ thành chuyện lớn, khách sợ mà tránh quầy thuốc. Lá tốt vẫn tốt, nhưng lòng người đã đục vì tiếng ồn của cơn giận.','quầy thuốc vắng khách, lá thuốc rơi rải trên nền đất'),
('scene_005','Chiều ấy, Thuận gặp một lão tiều phu bên suối. Thấy ông còn thở mạnh, cụ múc một bát nước đục đưa cho ông, rồi bảo cứ uống ngay nếu muốn lòng yên.','lão tiều phu đưa bát nước đục bên suối đá'),
('scene_006','Thuận nhăn mặt nói, nước này phải để lắng đã. Lão tiều phu cười, lòng người cũng vậy. Đang đục mà vội uống, chỉ tự làm mình nghẹn; đang giận mà vội nói, chỉ làm người khác đau.','hai người bên suối, bát nước đục đặt trên tảng đá'),
('scene_007','Cụ đặt bát nước xuống. Một lúc sau, bùn lắng dần, mặt nước hiện bóng trời. Thuận nhìn mà im lặng. Hóa ra có những việc không cần thêm lời, chỉ cần bớt tay khuấy động.','bát nước trong dần phản chiếu trời mây trên đá'),
('scene_008','Hôm sau, người trong chợ lại nhắc chuyện cũ. Thuận định đáp trả, nhưng nhớ bát nước bên suối, ông khép miệng, gom thuốc, rồi mời vài người biết nghề kiểm từng bó lá.','người hái thuốc bình tĩnh mời người kiểm lá thuốc ở chợ'),
('scene_009','Kết quả rõ ràng, thuốc không hề trộn xấu. Người nghi oan đỏ mặt, tự cúi đầu. Thuận chỉ nói, lần sau nghi thì hỏi nhỏ, ta cũng sẽ đáp nhỏ. Câu ấy nhẹ mà giữ được cả hai bên.','người bị oan và người nghi oan cúi đầu trước quầy thuốc'),
('scene_010','Từ đó, mỗi khi trong lòng nổi sóng, Thuận ra sau nhà nhìn chum nước. Nếu nước còn lay, ông chưa nói. Đợi mặt nước yên, ông mới mở lời, lời ít hơn nhưng sáng hơn.','người đàn ông nhìn chum nước sau nhà, mặt nước dần yên'),
('scene_011','Người trong làng dần tìm đến ông không chỉ vì thuốc tốt, mà vì ở gần ông lòng cũng bớt gấp. Một người biết lắng lòng có khi chữa được nhiều vết đau hơn một thang thuốc quý.','dân làng nhận thuốc trong không khí yên bình'),
('scene_012','Đời người ai cũng có lúc bị hiểu lầm, bị nói thiếu, bị chạm vào tự ái. Nhưng không phải việc nào cũng cần đáp ngay. Lời nói khi lòng đục thường giống dao rửa trong bùn, càng lau càng bẩn.','con dao nhỏ bên bùn và bát nước trong, hình ảnh biểu tượng'),
('scene_013','Biết im một lúc không phải là thua. Đó là cho trí khôn có thời gian trở về. Khi bùn lắng, ta mới thấy đâu là thật, đâu là bóng, đâu là câu nên nói và câu nên bỏ.','người ngồi thiền bên ao nước trong dưới trăng'),
('scene_014','Vậy nên, lúc lòng đục, đừng vội khuấy bằng lời hơn thua. Hãy để một khoảng lặng đứng giữa mình và cơn giận. Nước rồi sẽ trong, lòng rồi sẽ sáng, phúc cũng nhờ đó mà ở lại.','ao nước trong phản chiếu bình minh, người đứng bình thản'),
]
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':'clear bowl of water settling beside quiet mountain stream'},'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/133-Dung-De-Mot-Dong-Tien-Nho-Lam-Lech-Can-Luong-Tam'
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)
