#!/usr/bin/env python3
from pathlib import Path
import json, re
base=Path('/data/video-pipeline/Channel-Loi-Co-Nhan')
project_id='130-Giu-Goc-Re-Sach-Cay-Doi-Moi-Ben-Lau'
topic='Giữ gốc rễ sạch, cây đời mới bền lâu'
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, muốn cây đời bền lâu thì phải giữ gốc rễ sạch. Cành lá có thể rậm rạp một mùa, hoa trái có thể làm người đời khen ngợi, nhưng rễ mục rồi, một cơn gió cũng đủ làm cây đổ.','cây cổ thụ trên nền giấy vàng, rễ sạch bám sâu vào đất'),
('scene_002','Ở làng Sơn Hạ có người làm vườn tên Lễ. Ông không giỏi nói lời hay, chỉ nổi tiếng chăm cây kỹ từ dưới gốc. Ai mua giống của ông, cây thường chậm lớn nhưng ít bệnh.','người làm vườn áo nâu chăm gốc cây non trong vườn cổ'),
('scene_003','Một năm, quan huyện muốn có vườn đào nở sớm để khoe khách quý. Người trong làng đua nhau bón thuốc mạnh cho cây ra hoa nhanh. Hoa nở rực rỡ, tiếng khen vang khắp sân đình.','vườn đào nở rực trước sân đình, người làng nhìn ngắm'),
('scene_004','Lễ chỉ lặng lẽ xới đất, nhặt rác mục, pha phân nhẹ và tưới nước vừa đủ. Có người cười ông chậm chạp, bảo thời thế cần hoa trước mắt, ai còn nhìn xuống lớp rễ tối dưới đất.','người làm vườn xới đất quanh gốc cây, người khác cười chê'),
('scene_005','Ông đáp, hoa là mặt cây đưa ra ngoài, rễ là phần cây giấu trong lòng đất. Người đời cũng vậy, danh tiếng ở ngoài dễ tô vẽ, nhưng gốc tâm bên trong mà bẩn thì khó giấu lâu.','cận cảnh rễ cây trong đất và hoa phía trên, ánh sáng trầm'),
('scene_006','Mùa xuân ấy, vườn đào của người khác nở trước thật. Khách đến khen, chủ vườn được thưởng bạc. Còn vườn của Lễ chỉ lác đác vài nụ nhỏ, đứng khiêm nhường dưới sương sớm.','vườn cây ít nụ trong sương, người làm vườn bình thản'),
('scene_007','Con trai ông buồn, hỏi cha có phải mình thua người ta không. Lễ nhặt một nắm đất lên, nói, thua một mùa hoa chưa đáng sợ; đáng sợ là thắng bằng cách làm đất chết dưới chân mình.','cha con trong vườn, bàn tay nâng nắm đất màu nâu'),
('scene_008','Qua hạ, mưa lớn kéo dài. Những cây từng bị ép nở sớm bắt đầu vàng lá, thân rỗng, sâu ăn từ trong lõi. Hoa đẹp ngày trước không cứu nổi phần gốc đã bị nóng thuốc làm hư.','cây đào vàng lá sau mưa, thân rỗng, không khí u ám'),
('scene_009','Vườn của Lễ thì vẫn xanh. Lá không quá bóng, hoa không quá nhiều, nhưng thân chắc, rễ bám sâu, nước lũ đi qua rồi cây vẫn đứng. Người làng bắt đầu tìm ông hỏi cách cứu vườn.','vườn xanh sau mưa lũ, cây đứng vững, dân làng đến hỏi'),
('scene_010','Lễ không trách ai. Ông chỉ bảo, cây hư từ rễ thì phải chữa từ đất, đừng chỉ lau lá. Nhà hư từ nếp sống thì phải sửa từ lòng, đừng chỉ trang trí cửa ngoài.','người làm vườn chỉ xuống gốc cây, dân làng lắng nghe'),
('scene_011','Từ đó, con trai ông hiểu rằng đời người cũng có mùa bị lời khen làm say. Nếu chỉ chăm vẻ ngoài, áo đẹp, nhà cao, tiếng tăm lớn, mà quên sửa tâm tính, thì phúc cũng không có chỗ nương.','người con nhìn áo đẹp và căn nhà cao xa xa, rồi quay về gốc cây'),
('scene_012','Có người giàu vì mánh khóe, có người nổi danh nhờ lời thêu dệt, có nhà yên ngoài mặt nhưng bên trong đầy hơn thua. Tất cả giống cây hoa rực mà rễ đang âm thầm thối.','cây hoa rực rỡ nhưng dưới đất rễ tối, hình ảnh biểu tượng'),
('scene_013','Người biết giữ gốc thì không vội khoe cành. Mỗi ngày bớt một điều tham, sửa một lời độc, giữ một việc ngay, chăm một tấm lòng sạch, ấy là đang tưới nước cho phúc đức đời sau.','người ngồi bên gốc cây tưới nước, ánh sáng ấm và bình an'),
('scene_014','Vậy nên, đừng chỉ mong hoa nở trước mắt. Hãy giữ gốc rễ sạch trong từng việc nhỏ. Gốc sạch thì cây chậm vẫn bền; tâm sạch thì đời lặng vẫn có phúc, gặp gió lớn cũng không dễ ngã.','cây lớn vững vàng trong gió, rễ sáng dưới đất, trời bình minh'),
]
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':'clean tree roots glowing under an ancient tree, gardener holding a small 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,'checks':{'no_heading_scenes':True,'required_fields':True,'target_words_620_660':620<=words<=660}},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,'project_name':project_id[4:].replace('-',' '),'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  \nChannel: Loi Co Nhan  \nWorkflow version: v3-current-short-ai-script\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/129-Giu-Long-Ngay-Thang-Dung-So-Duong-Quanh-Co'
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)
