#!/usr/bin/env python3
from pathlib import Path
import json, re
base=Path('/data/video-pipeline/Channel-Loi-Co-Nhan')
project_id='132-Biet-Giu-Phan-Minh-Dung-Tham-Anh-Sang-Nha-Nguoi'
topic='Biết giữ phần mình, đừng tham ánh sáng nhà người'
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, người biết giữ phần mình thì lòng dễ yên, người cứ nhìn ánh sáng nhà khác thì bếp nhà mình cũng hóa tối. Phúc không ở chỗ hơn người, mà ở chỗ biết đủ với điều ngay chính mình có.','người đứng trước căn nhà nhỏ có đèn dầu, xa xa nhà khác sáng hơn'),
('scene_002','Ở xóm ven đê có người thợ gốm tên An. Lò nhà anh nhỏ, đất sét không nhiều, mỗi tháng chỉ nung được vài mẻ bát thô. Tuy vậy, bát của anh bền, men mộc, người nghèo rất chuộng.','thợ gốm áo nâu bên lò gốm nhỏ, bát thô xếp ngay ngắn'),
('scene_003','Gần đó có một lò lớn của nhà phú hộ. Đêm nào lửa cũng đỏ rực, xe chở hàng ra vào không dứt. Vợ An nhìn sang, thở dài, bảo nhà người ta sáng như hội, còn nhà mình chỉ le lói.','lò gốm lớn đỏ lửa ở xa, người vợ nhìn từ căn nhà nhỏ'),
('scene_004','An nghe mà lòng dao động. Anh bắt đầu nung nhiều hơn sức lò, pha đất non để kịp hàng, mượn thêm tiền mua màu men bóng. Bát ra lò đẹp hơn trước, nhưng gõ nhẹ đã nghe tiếng rỗng.','người thợ gốm vội vàng pha đất và nhìn bát bóng nhưng mỏng'),
('scene_005','Khách mua ban đầu khen bát sáng mắt. Nhưng qua vài tuần, bát nứt khi gặp nước nóng, men bong ở miệng chén. Người nghèo đem trả, nét buồn trên mặt còn nặng hơn lời trách.','người nghèo cầm bát nứt trả lại trong sân lò gốm'),
('scene_006','Đêm ấy, An ngồi trước lò lạnh. Người cha già của anh nhặt một chiếc bát cũ lên, nói, bát thô mà giữ được cơm nóng còn hơn bát bóng chỉ để nhìn. Người cũng vậy, mất thật thì đẹp mấy cũng rỗng.','cha già cầm bát thô bên lò gốm nguội, con trai cúi đầu'),
('scene_007','Ông chỉ sang ánh lửa nhà phú hộ rồi nói, đèn nhà người sáng không làm bếp nhà mình ấm. Nếu cứ mải chạy theo ánh sáng ngoài sân, con sẽ quên thêm củi vào lò của chính mình.','cha chỉ về lò sáng xa xa, lò nhỏ bên cạnh còn than đỏ'),
('scene_008','An thức trắng, đem những chiếc bát lỗi xếp riêng, rồi sáng sau tự mình đi từng nhà đổi lại bát mới. Có người mắng, có người lắc đầu, anh đều cúi xuống nhận lỗi.','người thợ gốm gánh bát đi qua xóm, cúi đầu đổi bát lỗi'),
('scene_009','Từ hôm đó, anh giảm mẻ nung, chọn đất kỹ, giữ men mộc như trước. Lò nhỏ lại cháy chậm rãi. Ánh lửa không cao, nhưng đều và chắc, giống một người đã tìm lại nhịp thở của mình.','lò gốm nhỏ cháy đều, người thợ chăm chú xoay bát'),
('scene_010','Vợ anh ban đầu còn ngại với xóm giềng. Nhưng khi thấy khách cũ quay lại, bà hiểu rằng phần mình tuy nhỏ nhưng sạch, còn hơn vay mượn vẻ lớn để rồi đánh mất lòng tin.','người vợ đứng bên chồng, khách quê chọn bát mộc'),
('scene_011','Một năm sau, lò lớn gặp chuyện vì hàng bóng đẹp mà dễ vỡ. Người mua dần tìm về lò nhỏ. An không vui mừng trên lỗi người khác, chỉ lặng lẽ đặt thêm củi, giữ lửa vừa đủ.','dân làng trở lại lò gốm nhỏ, người thợ bình thản thêm củi'),
('scene_012','Đời người cũng như lò gốm. Thấy nhà khác giàu, chức khác cao, tiếng khác vang, ta dễ quên đất sét trong tay mình. Nhưng thứ không thuộc phần mình, càng ôm vội càng dễ làm nứt lòng.','bàn tay cầm đất sét, phía xa bóng nhà lớn và chức sắc mờ ảo'),
('scene_013','Biết giữ phần mình không phải là chịu nhỏ mãi, mà là lớn lên từ gốc thật. Cây mọc đúng đất thì chậm vẫn bền; người đi đúng phận thì ít ồn ào mà lòng không hổ thẹn.','cây non mọc trong mảnh đất nhỏ, người đi trên đường làng yên tĩnh'),
('scene_014','Vậy nên, đừng tham ánh sáng nhà người đến mức quên ngọn đèn nhà mình. Giữ phần mình cho sạch, làm việc mình cho chắc, phúc sẽ không ồn ào kéo đến, nhưng sẽ ở lại rất lâu.','ngọn đèn dầu trong nhà nhỏ sáng ấm, gia đình yên bình bên lò gốm'),
]
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':'small warm oil lamp in a potter house beside humble clay bowls'},'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/131-Dung-De-Bua-Com-Nha-Lanh-Vi-Loi-Hon-Thua'
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)
