#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
=============================================================================
GENERATOR: EPISODE 06 FULL HOLLYWOOD 30-MIN SCREENPLAY & 190 MUSE PROMPTS
=============================================================================
Tập 6: HOÀN NGUYÊN TÁI NGỘ (HỒN ĐOẠN TIỀN ĐƯỜNG & ĐOÀN VIÊN THANH TỊNH)
(190 Shots / 15 Cảnh / 3 Hồi chuẩn Hollywood) - ĐẠI KẾT CỤC (GRAND FINALE)
Bám sát nguyên tác câu 2531 - 3254 của Nguyễn Du:
- Hồi 1 (Cảnh 01 - 05, 62 shots): Cái chết bi tráng Từ Hải - tượng đồng sa trường, 
                                  tiệc hầu đàn oan khốc & gả ép thổ quan.
- Hồi 2 (Cảnh 06 - 10, 62 shots): Sóng lạnh Tiền Đường, dải lụa đào trôi sóng, 
                                  chiếc lưới từ bi & thảo am nâu sồng thanh tịnh.
- Hồi 3 (Cảnh 11 - 15, 66 shots): Mười lăm năm tìm kiếm của Kim Trọng, đại trùng phùng 
                                  sau sinh ly tử biệt & đêm trăng tình tri kỷ thanh tân.
=============================================================================
"""

import sys
import json
from pathlib import Path

# UTF-8 Windows
if sys.platform == "win32":
    try:
        sys.stdout.reconfigure(encoding="utf-8")
        sys.stderr.reconfigure(encoding="utf-8")
    except Exception:
        pass

BASE_DIR = Path(__file__).resolve().parent.parent
EPISODES_DIR = BASE_DIR / "episodes"
EP06_DIR = EPISODES_DIR / "ep06"
PROMPTS_DIR = EP06_DIR / "prompts"
SCREENPLAY_PATH = EP06_DIR / "screenplay.md"
MUSE_PROMPTS_PATH = PROMPTS_DIR / "muse_prompts.json"
BANANA_PROMPTS_PATH = PROMPTS_DIR / "banana_prompts.json"
MANIFEST_PATH = EP06_DIR / "manifest.json"

PROMPTS_DIR.mkdir(parents=True, exist_ok=True)

AUDIO_GUARD = (
    "Quy tắc âm thanh: Tuyệt đối KHÔNG sinh nhạc nền (no music/BGM), không âm thanh điện tử, "
    "không tạp âm rè nhiễu. Chỉ sinh âm thanh môi trường tự nhiên (foley, ambience) và thoại nhân vật chân thực."
)

SCENES_META = [
    {
        "num": 1, "shots": 12, "slug": "EXT. BATTLEFIELD WHARF - SUNSET BLOOD RED",
        "title": "Cảnh 01: Tượng đồng sa trường - Từ Hải chết đứng giữa trời đất không chịu ngã",
        "act": 1, "loc": "Bãi sa trường duyên hải hoang tàn, hoàng hôn đỏ rực như máu, khói lửa tàn lụi, gươm giáo cắm ngổn ngang",
        "chars": "Từ Hải (thân mười thước sừng sững tựa tượng đồng, tay chống đại đao, mắt mở trừng trừng kiêu hùng), Quân quan triều đình run sợ",
        "theme": "Khí phách lẫm liệt bất tử của người anh hùng; quân thù dẫu thắng trận vẫn khiếp đảm không dám bước lại gần."
    },
    {
        "num": 2, "shots": 12, "slug": "EXT. UNDER STATUE OF TỪ HẢI - SUNSET DUSK",
        "title": "Cảnh 02: Dưới chân tượng đồng - Kiều khóc ôm thi thể, người anh hùng mới chịu ngã",
        "act": 1, "loc": "Dưới chân Từ Hải trên nền cát sỏi sa trường, ánh tà dương tím sẫm",
        "chars": "Thúy Kiều (26t, lao ra từ rèm giam, quỳ sụp đập đầu khóc nấc từng tiếng xé ruột), Thi thể Từ Hải",
        "theme": "Giọt nước mắt sám hối muộn màng và tiếng khóc tri âm lay động khí thiêng; thi thể người anh hùng từ từ ngả xuống."
    },
    {
        "num": 3, "shots": 12, "slug": "INT. GOVERNOR HEADQUARTERS - NIGHT",
        "title": "Cảnh 03: Quân doanh Hồ Tôn Hiến khải hoàn - Đại tiệc mừng công rượu thịt linh đình",
        "act": 1, "loc": "Đại sảnh quân doanh lộng lẫy ánh đuốc và đèn lồng, bàn tiệc đầy ắp cao lương mỹ vị",
        "chars": "Hồ Tôn Hiến (50t, say men chiến thắng), Đám tướng lĩnh quan quân triều đình",
        "theme": "Sự thỏa mãn đê hèn của kẻ chiến thắng bằng mưu gian; Hồ Tôn Hiến hạ lệnh bắt Kiều ra hầu rượu gảy đàn mua vui."
    },
    {
        "num": 4, "shots": 14, "slug": "INT. BANQUET HALL - NIGHT",
        "title": "Cảnh 04: Tiệc rượu hầu đàn - Khúc đàn thứ 4 xé ruột & Hồ Tôn Hiến tái mặt sợ oan hồn",
        "act": 1, "loc": "Giữa sảnh yến tiệc, đàn tỳ bà cổ, khói trầm nghi ngút",
        "chars": "Thúy Kiều (26t, khoác áo hoa tang tóc, đôi mắt ngút ngàn căm hờn), Hồ Tôn Hiến (sững sờ run sợ)",
        "theme": "Khúc đàn thứ 4 ai oán rung chuyển tâm can, như tiếng khóc của vạn linh hồn tử sĩ; Hồ Tôn Hiến run rẩy đánh rơi chén rượu."
    },
    {
        "num": 5, "shots": 12, "slug": "INT. GOVERNOR PRIVATE CHAMBER - MIDNIGHT",
        "title": "Cảnh 05: Soái phủ nửa đêm - Hồ Tôn Hiến hổ thẹn lương tâm & Ép gả Kiều cho viên thổ quan",
        "act": 1, "loc": "Phòng kín soái phủ, ánh nến chập chờn, viên Thổ quan miền núi thô kệch quỳ nhận lệnh",
        "chars": "Hồ Tôn Hiến (bất an, sợ dư luận thiên hạ chê cười), Thổ quan miền núi",
        "theme": "Để rũ sạch trách nhiệm và che giấu tội ác, Hồ Tôn Hiến ban chiếu ép gả Kiều cho viên thổ quan, tống nàng xuống thuyền ra biển."
    },
    {
        "num": 6, "shots": 12, "slug": "EXT. BOAT CABIN ON TIEN DUONG RIVER - DAWN FOG",
        "title": "Cảnh 06: Con thuyền xuôi dòng Tiền Đường - Sóng bạc mênh mông & Nỗi lòng nhớ Đạm Tiên",
        "act": 2, "loc": "Mạn thuyền gỗ chao đảo trên dòng sông Tiền Đường cuồn cuộn sóng bạc, sương sớm mờ mịt, gió bấc lạnh buốt",
        "chars": "Thúy Kiều (26t, tà áo lam bay phần phật trong gió, đôi mắt nhìn vời vợi cõi xa xăm)",
        "theme": "Kiều nhớ lại lời tiên tri năm xưa bên nấm mồ Đạm Tiên tiết Thanh minh; mười lăm năm lưu lạc trần gian nay đã đến hồi kết thúc."
    },
    {
        "num": 7, "shots": 14, "slug": "EXT. TIEN DUONG RIVER RAPIDS - DAWN",
        "title": "Cảnh 07: Trầm mình sông Tiền Đường - Dải lụa đào trôi trên ngàn con sóng biếc",
        "act": 2, "loc": "Mũi thuyền giữa dòng sông Tiền Đường cuồn cuộn sóng trào, bầu trời xám bạc (YouTube Green Dollar compliant)",
        "chars": "Thúy Kiều (chắp tay hướng về trời cao nguyền tạ tội), Dải lụa đào đỏ thắm",
        "theme": "Không mô tả bạo lực; Kiều buông dải lụa đào đỏ thắm bay lượn giữa trời rồi rơi xuống sóng nước; thân ảnh nàng chìm vào làn sóng bạc."
    },
    {
        "num": 8, "shots": 12, "slug": "EXT. TIEN DUONG RIVER RESCUE BOAT - MORNING",
        "title": "Cảnh 08: Chiếc lưới từ bi buông ngang dòng nước - Sư Giác Duyên kịp thời vớt Kiều lên thuyền",
        "act": 2, "loc": "Chiếc thuyền chài mộc mạc giăng lưới ngang dòng sông, ánh nắng sớm xuyên qua màn sương",
        "chars": "Sư Giác Duyên (55t, hiền từ nhân hậu), Hai người chài lưới thiện nghệ, Thúy Kiều (bất tỉnh được kéo lên)",
        "theme": "Linh hồn Đạm Tiên báo mộng dặn giăng lưới chờ sẵn; chiếc lưới từ bi kịp thời vớt lấy Kiều khỏi đáy nước sâu thẳm."
    },
    {
        "num": 9, "shots": 12, "slug": "INT. ZEN HERMITAGE BY THE RIVER - DAY",
        "title": "Cảnh 09: Hồi tỉnh nơi thảo am ven sông - Tiếng chuông chùa thanh thản thức tỉnh linh hồn",
        "act": 2, "loc": "Thảo am mái lá nép bên rặng trúc xanh ven bờ sông Tiền Đường, tượng Phật Di Đà, lư trầm nghi ngút",
        "chars": "Thúy Kiều (tỉnh dậy, gương mặt thoát tục rũ sạch bụi trần), Sư Giác Duyên (trao bát cháo hoa nóng hổi)",
        "theme": "Kiều thức tỉnh sau cơn ác mộng mười lăm năm; nàng quỳ lạy tạ ơn Sư Giác Duyên và xin xuống tóc nương náu cửa thiền."
    },
    {
        "num": 10, "shots": 12, "slug": "EXT./INT. ZEN HERMITAGE - SUNNY DAY",
        "title": "Cảnh 10: Manh áo nâu sồng thanh tịnh - Quét lá bồ đề, gõ mõ tụng kinh, tâm tĩnh như nước",
        "act": 2, "loc": "Sân chùa trải thảm lá tre, chánh điện mộc mạc, tiếng mõ chuông vang vọng",
        "chars": "Thúy Kiều (28t, manh áo nâu sồng mộc mạc, nụ cười an nhiên thoát tục), Sư Giác Duyên",
        "theme": "Cuộc sống an lạc, thanh tịnh tuyệt đối nơi am mây; rũ bỏ hết son phấn lầu xanh và oán hận trần gian, tâm tĩnh tựa mặt hồ thu."
    },
    {
        "num": 11, "shots": 12, "slug": "EXT. RIVERSIDE ROAD & INN - AFTERNOON",
        "title": "Cảnh 11: Mười lăm năm tìm kiếm của Kim Trọng - Vị quan triều đình tóc điểm sương mai bên bờ sông",
        "act": 3, "loc": "Đường thiên lý ven sông Tiền Đường, quán trà ven bến đò, gió thu xào xạc lá rụng",
        "chars": "Kim Trọng (33t, phẩm phục quan triều đình đĩnh đạc, tóc điểm sương, ánh mắt hoài vọng khắc khoải), Vương Quan (29t)",
        "theme": "Suốt 15 năm làm quan, Kim Trọng chưa từng nguôi ngoai việc dò la tin tức Thúy Kiều; tấm lòng thủy chung son sắt ngàn năm."
    },
    {
        "num": 12, "shots": 12, "slug": "EXT. FERRY WHARF TIEN DUONG - SUNSET",
        "title": "Cảnh 12: Cuộc hạnh ngộ bên bến đò - Kim Trọng gặp Sư Giác Duyên, vỡ òa tin tức Kiều còn sống",
        "act": 3, "loc": "Bến đò ngang sông Tiền Đường chiều tà, bóng đò neo bến",
        "chars": "Kim Trọng, Vương Quan, Sư Giác Duyên (cầm chuỗi tràng hạt bước lên bến)",
        "theme": "Nhận ra câu chuyện bạc mệnh của người con gái nương náu thảo am; Kim Trọng và Vương Quan run rẩy mừng tủi tức tốc lên đường."
    },
    {
        "num": 13, "shots": 16, "slug": "EXT./INT. ZEN HERMITAGE FRONT YARD - SUNSET GOLD",
        "title": "Cảnh 13: Cánh cổng trúc mở ra - Giây phút đại trùng phùng chấn động tâm can sau 15 năm sinh ly tử biệt",
        "act": 3, "loc": "Cổng trúc và hiên thảo am ngập tràn ánh hoàng hôn vàng óng ả, hoa cúc dại nở rộ ven rào",
        "chars": "Thúy Kiều (bước ra hiên tay cầm cành hoa), Kim Trọng (sững sờ rơi nước mắt nhìn người xưa), Vương Ông, Vương Bà (70t, tóc bạc), Thúy Vân (30t)",
        "theme": "Khoảnh khắc kinh điển nghẹn ngào vỡ òa cảm xúc; cha mẹ ôm chầm con gái khóc nấc, Kim Trọng và Kiều bốn mắt nhìn nhau sau 15 năm bão táp."
    },
    {
        "num": 14, "shots": 14, "slug": "INT. VƯƠNG RESIDENCE GRAND HALL - NIGHT",
        "title": "Cảnh 14: Lễ mừng trùng phùng tại tư dinh - Vương gia đoàn tụ & Thúy Vân nhắc lại lời cậy duyên",
        "act": 3, "loc": "Đại sảnh tư dinh họ Vương trang hoàng ấm cúng, đèn hoa rực rỡ, mâm cơm đoàn viên",
        "chars": "Thúy Kiều, Kim Trọng, Thúy Vân (mệnh phụ phúc hậu, cầm tay chị rưng rưng), Vương Quan, Vương Ông Vương Bà",
        "theme": "Thúy Vân chân tình thưa chuyện chắp nối duyên xưa; mọi ân tình hiếu nghĩa được sáng tỏ trong nụ cười mãn nguyện của song thân."
    },
    {
        "num": 15, "shots": 16, "slug": "INT./EXT. COURTYARD PAVILION - FULL MOON NIGHT",
        "title": "Cảnh 15: Đêm trăng rằm thanh tịnh & Vĩ thanh điện ảnh - Tình tri kỷ cao thượng ngoài cầm thơ",
        "act": 3, "loc": "Thủy đình sân vườn hoa sen dưới ánh trăng rằm vằng vặc soi tỏ, bàn cờ, chén trà hương sen, cây đàn tỳ bà",
        "chars": "Thúy Kiều (31t, áo lụa trắng thanh khiết như tiên giáng trần), Kim Trọng (34t, nụ cười thấu suốt an nhiên)",
        "theme": "Kiều gảy khúc đàn hòa hợp trong trẻo ngộ đạo; tình yêu chuyển hóa thành tình tri kỷ cao thượng 'Chẳng trong chăn gối cũng ngoài cầm thơ'."
    }
]

def generate_ep06_shot_details(sc, s_idx):
    sc_num = sc["num"]
    sid = f"ep06_scene{sc_num:02d}_shot{s_idx:02d}"

    framings = [
        "Toàn cảnh đại cảnh sử thi (Epic Wide Establishing Shot)",
        "Trung cảnh chuyển động oai phong (Medium Dynamic Tracking)",
        "Trung cận biểu cảm vi mô (Medium Close-Up - MCU)",
        "Cận cảnh gương mặt sắc sảo (Close-Up Facial Detail)",
        "Cận cảnh bảo kiếm / dải lụa đào (Detail Prop Close-Up)",
        "Cực cận ánh mắt an nhiên / giọt lệ trùng phùng (Extreme Close-Up - ECU)",
        "Góc máy thấp tôn vinh tầm vóc anh hùng (Low Angle Heroic Framing)",
        "Góc máy qua vai kịch tính đối chất (Over The Shoulder - OTS)",
        "Toàn cảnh sông nước Tiền Đường (Panoramic Epic River Vista)",
        "Cận cảnh trượt chậm tiến lại (Slow Dolly In MCU)",
        "Toàn cảnh thảo am mây thanh tịnh (Zen Temple Wide Scene)",
        "Góc máy chéo nghiêng dồn dập (Dutch Angle Suspense)",
        "Góc máy cận khóa khẩu hình (Direct Profile Close-Up)",
        "Cận cảnh tĩnh lặng an nhiên (Static Contemplative Close-Up)",
        "Toàn cảnh kết nối Head-Tail (Continuous Transition Wide Shot)",
        "Đại cảnh vĩ thanh điện ảnh trăng rằm (Grand Cinematic Finale Extreme Wide)"
    ]
    framing = framings[(s_idx - 1) % len(framings)]

    if sc_num == 1:
        v_vi = (
            f"Bãi sa trường duyên hải hoang tàn ngập tràn khói lửa tàn lụi. Mặt trời chiều đỏ rực như máu chìm dần sau rặng núi xa xăm, "
            f"nhuộm đỏ cả bãi chiến trường hoang lạnh. Giữa ngổn ngang tên đạn, TỪ HẢI ĐỨNG SỪNG SỮNG GIỮA TRỜI ĐẤT NHƯ MỘT PHO TƯỢNG ĐỒNG BẤT TỬ! "
            f"Tấm thân mười thước của chàng như cột trụ chống trời, tay nắm chặt chuôi đại đao cắm sâu vào lòng đất làm điểm tựa vững chãi. "
            f"Hai mắt mở to trừng trừng nhìn về phía quân thù, miệng mỉm cười ngạo nghễ (YouTube Green Dollar: tượng đồng kiêu hùng, không máu me). "
            f"Quân quan triều đình run rẩy khiếp đảm, không một tên nào dám bước lại gần."
        )
        a_s1 = "Dàn nhạc đàn nhị kết hợp cello bi tráng, giai điệu hào sảng lẫm liệt rung chuyển tâm can."
        a_s2 = "Tiếng gió sa trường rít gào buốt lạnh thổi tung bụi cát, tiếng cờ rách bay phần phật trong gió chiều."
        a_s3 = "Tiếng gươm giáo cắm trên nền cát rung lên bần bật trong gió, tiếng bước chân quân sĩ run rẩy lùi lại phía sau."
        a_s4 = "[KHÓA KHẨU HÌNH BẮT BUỘC]: Đôi môi nhân vật trong khung hình khép chặt tự nhiên, không mấp máy."
        p_en = (
            f"Monumental heroic tragedy, {framing}. Blood-red cinematic sunset over a silent, desolate coastal battlefield. "
            f"Legendary warlord Từ Hải stands immortal like a colossal bronze statue amidst scattered arrows and fallen battle banners. "
            f"His towering muscular figure leans majestically upon his heavy two-handed broadsword driven deep into the earth. "
            f"His unblinking fierce eyes stare straight forward with a defiant proud smile, refusing to yield even in death "
            f"(strictly compliant YouTube Green Dollar: mythical bronze statue aesthetic, zero graphic gore, timeless epic heroism). "
            f"Imperial soldiers tremble in sheer awe at the perimeter, afraid to approach. Masterclass 35mm film lighting. "
            f"Âm thanh: Tiếng gió bấc rít qua bãi sa trường hoang vắng, tiếng cờ rách phần phật, tiếng đàn cello bi tráng ngút trời. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 2:
        v_vi = (
            f"Từ rèm trướng giam giữ, Thúy Kiều điên cuồng phá cửa chạy túa ra bãi chiến trường. Nhìn thấy người chồng anh hùng đứng chết trơ trọi, "
            f"cõi lòng nàng vỡ vụn thành trăm mảnh. Nàng ngã quỵ sụp xuống dưới chân chàng, hai tay ôm chặt đôi chân sắt đá của Từ Hải khóc than "
            f"xé ruột xé gan: 'Chàng ơi! Oan khiên này là do thiếp ngu muội gây ra...'. Từng giọt nước mắt sám hối nóng hổi của nàng rơi xuống mu bàn chân chàng. "
            f"KỲ DIỆU THAY! Nhận ra tấm lòng tri kỷ sám hối muộn màng, thi hài Từ Hải bấy giờ mới từ từ ngả xuống nền đất sa trường trong ánh tịch dương rực lửa."
        )
        a_s1 = "Khúc nhạc bi ai tột đỉnh nghẹn ngào xé ruột của dàn nhạc ngũ cung cổ phong."
        a_s2 = "Tiếng gió sa trường bỗng chốc lặng đi, không gian như ngưng đọng trước thảm kịch nhân gian."
        a_s3 = "Tiếng nước mắt Kiều rơi ướt đẫm giày vải Từ Hải, tiếng thi hài chàng từ từ ngả xuống nền cát êm đềm như một ngọn núi lớn quy tịch."
        a_s4 = "Tiếng Kiều nấc nghẹn từng hồi: 'Chàng ơi! Thiếp còn mặt mũi nào sống sót trên cõi trần này nữa! Chàng hãy tha thứ cho thiếp!'."
        p_en = (
            f"Heart-wrenching epic drama, {framing}. Thúy Kiều (26yo, disheveled crimson phoenix robes, eyes brimming with unbearable grief) "
            f"collapses beneath the standing body of her husband Từ Hải. She clings desperately to his feet, her tears soaking his boots. "
            f"In a supernatural moment of spiritual release, having heard his beloved's true devotion, the bronze statue of the warrior "
            f"slowly and peacefully descends to the earth like a falling ancient mountain under the fiery crimson twilight sky. "
            f"Profound poetic tragedy, emotional peak. "
            f"Âm thanh: Tiếng Kiều khóc nấc nghẹn ngào xé lòng, tiếng thi thể người anh hùng ngả xuống cát mềm, tiếng gió thổi buồn tê tái. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 4:
        v_vi = (
            f"Đại sảnh yến tiệc quân doanh Hồ Tôn Hiến. Trong hơi men chuếnh choáng, hắn ép Kiều khoác áo hoa ôm đàn tỳ bà ra hầu tiệc mua vui. "
            f"Kiều đứng giữa sảnh, đôi mắt ngút ngàn căm hờn. Mười ngón tay búp măng của nàng đặt lên phím đàn, cất lên Khúc Đàn Thứ Tư não ruột xé lòng. "
            f"Từng tiếng đàn rít lên như tiếng khóc than của vạn oan hồn tử sĩ nơi sa trường đòi nợ máu! Cả sảnh tiệc bỗng im phăng phắc như chầu âm ty. "
            f"Hồ Tôn Hiến ngồi trên sập gụ mặt tái mét không còn một giọt máu, run rẩy đánh rơi chén rượu vì sợ hãi oan hồn Từ Hải hiện về đòi mạng."
        )
        a_s1 = "Khúc đàn tỳ bà ai oán rợn người, từng nốt réo rắt u uất như tiếng than khóc của vạn linh hồn nơi đáy mồ sâu."
        a_s2 = "Cả sảnh tiệc im phăng phắc nín thở, chỉ nghe tiếng gió lùa làm ngọn nến chập chờn ma quái."
        a_s3 = "Tiếng chén rượu vàng tuột khỏi tay Hồ Tôn Hiến rơi xuống sàn phát ra tiếng kêu khô khốc, rượu đổ lênh láng trên thảm gấm."
        a_s4 = "[KHÓA KHẨU HÌNH BẮT BUỘC]: Đôi môi nhân vật trong khung hình khép chặt tự nhiên, không mấp máy."
        p_en = (
            f"Chilling psychological horror and virtuoso performance, {framing}. Inside Governor Hồ Tôn Hiến's grand victory banquet hall. "
            f"Thúy Kiều (26yo, pale face of cold tragic fury) plays her antique pipa lute with electrifying, sorrowful intensity. "
            f"The music seems to summon the vengeful spirits of the fallen warriors. Hundreds of drunken officers freeze in terror. "
            f"On his throne, Governor Hồ Tôn Hiến turns ashen white with dread, his trembling fingers dropping his golden wine cup. "
            f"High-contrast chiaroscuro candlelight, flickering lanterns casting spectral silhouettes. "
            f"Âm thanh: Tiếng đàn tỳ bà ai oán réo rắt rợn tóc gáy, tiếng chén rượu rơi lách cách xuống sàn, tiếng thở dồn dập sợ hãi. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 7:
        v_vi = (
            f"Con thuyền xuôi dòng Tiền Đường cuồn cuộn sóng bạc lúc mờ sáng. Gió bấc thổi rít gào làm tà áo lam của Kiều bay phần phật. "
            f"Kiều bước ra mũi thuyền, chắp tay ngửa mặt lên trời xanh khấn nguyện tạ tội cùng Từ Hải và rửa sạch mười lăm năm bụi trần nhơ nhớp. "
            f"Nàng buông dải lụa đào trên vai bay theo chiều gió cuốn (YouTube Green Dollar: dải lụa đào trôi sóng, tuyệt đối không bạo lực). "
            f"Dải lụa đào đỏ thắm lững lờ chao liệng giữa không trung rồi rơi xuống trôi dập dềnh trên ngàn con sóng bạc đầu. "
            f"Hình bóng nàng hòa tan vào làn nước biếc mênh mông."
        )
        a_s1 = "Khúc giao hưởng Tiền Đường giang cuồn cuộn dâng trào, tiếng sáo trúc vút lên thanh thoát như tiếng chim bay về trời cao."
        a_s2 = "Tiếng sóng sông Tiền Đường gầm réo cuồn cuộn sóng bạc, tiếng gió bấc thổi rít từng cơn buốt lạnh."
        a_s3 = "Tiếng dải lụa đào sột soạt bay trong gió, tiếng bọt nước sông tung tóe trắng xóa mạn thuyền."
        a_s4 = "Tiếng Kiều khấn nguyện thanh thản: 'Thiếp xin đem thân này gửi lại đáy sông sâu để tạ tội cùng chàng và rửa sạch bụi trần oan nghiệt!'."
        p_en = (
            f"Poetic and serene sacrifice scene, {framing}. Extreme wide panoramic view of the vast, churning Tiền Đường river at dawn. "
            f"Winter wind billows the modest blue robes of Thúy Kiều on the prow of the wooden ferry. "
            f"With tranquil spiritual resolve, she releases a brilliant scarlet silk ribbon into the turbulent gale. "
            f"The red ribbon dances weightlessly in the misty grey air before descending onto the foaming silver crests of the water "
            f"(strictly compliant YouTube Green Dollar: artistic metaphor of the silk ribbon, zero graphic suicide depiction). "
            f"Magnificent visual poetry, cinematic transcendence. "
            f"Âm thanh: Tiếng sóng sông gầm réo cuộn trào, tiếng gió bấc rít gào, tiếng dải lụa đào bay phần phật thanh thoát. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 8:
        v_vi = (
            f"Thế nhưng duyên nợ cõi trần của Kiều vẫn chưa dứt! SƯ CÔ GIÁC DUYÊN sau khi được linh hồn Đạm Tiên báo mộng, đã thuê sẵn "
            f"hai người chài lưới thiện nghệ giăng chiếc lưới ngang dòng nước xiết từ lúc mờ sáng. Chiếc lưới từ bi buông ngang dòng sông "
            f"kịp thời đón lấy thân thể Kiều khi nàng vừa chìm xuống đáy nước. Hai người thợ chài hợp sức kéo lưới lên mạn thuyền. "
            f"Giác Duyên ôm chầm lấy Kiều, ân cần khoác tấm chăn ấm và chèo thuyền đưa nàng về thảo am mây thanh tịnh ẩn sâu bên rặng trúc ven sông."
        )
        a_s1 = "Khúc nhạc từ bi cứu rỗi dâng trào, tiếng chuông chùa ngân nga hòa vào giai điệu đàn tranh ấm áp."
        a_s2 = "Tiếng nước sông khua khoắng bì bõm quanh mạn thuyền nan, tiếng chim hót ríu rít báo hiệu bình minh xua tan tăm tối."
        a_s3 = "Tiếng kéo lưới chài căng dây cót két, tiếng bọt nước bắn tung tóe khi thân hình Kiều được nhấc lên khỏi mặt sông."
        a_s4 = "Tiếng Sư Giác Duyên từ bi: 'Mô Phật! Con đã qua cơn bĩ cực rồi! Hãy theo bần ni về chốn thảo am tĩnh dưỡng!'."
        p_en = (
            f"Heroic rescue and spiritual redemption, {framing}. On a rustic wooden fishing sampan amidst morning river mist. "
            f"Buddhist nun Giác Duyên (55yo, serene grey habit) and two weathered fishermen pull in a large hemp fishing net "
            f"laid across the river current, safely rescuing Thúy Kiều from the depths. Golden morning sunlight breaks through the clouds. "
            f"Giác Duyên wraps a warm rough woolen blanket around the shivering young woman. Profound compassion, warm lighting. "
            f"Âm thanh: Tiếng kéo lưới chài ràn rạt, tiếng nước sông chảy róc rách, tiếng niệm Phật từ bi ấm áp. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 10:
        v_vi = (
            f"Thảo am mây ven sông Tiền Đường. Rũ sạch hết phấn son lầu xanh và bụi trần oan nghiệt, Kiều khoác lên mình manh áo nâu sồng mộc mạc. "
            f"Ngày ngày nàng quét lá bồ đề trong sân trúc, gõ mõ tụng kinh dưới chân tượng Phật, tìm lại sự thanh thản an nhiên tuyệt đối cho tâm hồn "
            f"sau mười lăm năm sóng gió ba đào. Ánh nắng sớm rọi qua tán lá trúc xanh mướt, nụ cười trên môi Kiều trong trẻo và thoát tục như sương mai."
        )
        a_s1 = "Khúc thiền ca thanh tịnh, tiếng sáo trúc và đàn tranh êm đềm như dòng suối mát lành chảy qua tâm can."
        a_s2 = "Tiếng gió lùa qua rặng trúc xào xạc thanh tịnh, tiếng chim muông ríu rít đón ánh bình minh."
        a_s3 = "Tiếng chổi tre quét lá bồ đề loạt soạt trên sân đất mộc mạc, tiếng mõ chùa 'cốc... cốc... cốc...' ngân đều đặn."
        a_s4 = "[KHÓA KHẨU HÌNH BẮT BUỘC]: Đôi môi nhân vật trong khung hình khép chặt tự nhiên, không mấp máy."
        p_en = (
            f"Zen serenity and inner peace montage, {framing}. At the secluded riverside Buddhist hermitage. "
            f"Thúy Kiều (28yo, stripped of all cosmetics and jewelry, radiating natural ethereal purity) dressed in coarse brown linen robes. "
            f"She gently sweeps fallen bamboo leaves in the sunny stone courtyard with a rustic broom, pausing to look up at the morning sky with a calm, transcendent smile. "
            f"Golden sunlight filters through lush emerald bamboo groves. Visual harmony, peaceful cinematic atmosphere. "
            f"Âm thanh: Tiếng chổi tre quét lá tre loạt soạt, tiếng mõ chuông chùa ngân nga đều đặn, tiếng chim hót ban mai. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 13:
        v_vi = (
            f"Cánh cổng trúc thảo am mở ra... Thúy Kiều bước ra hiên nhà trong manh áo nâu sồng, tay cầm cành hoa cúc dại. "
            f"BỐN MẮT NHÌN NHAU SAU MƯỜI LĂM NĂM SINH LY TỬ BIỆT! KIM TRỌNG (33 tuổi, tóc điểm sương mai) đứng lặng sững sờ, "
            f"hai hàng nước mắt lăn dài trên gò má phong sương. VƯƠNG ÔNG và VƯƠNG BÀ (70 tuổi, tóc bạc phơ) lao tới ôm chầm lấy con gái khóc nấc lên từng hồi. "
            f"THÚY VÂN (30 tuổi, mệnh phụ đoan trang) cầm tay chị gái rưng rưng: 'Chị Kiều ơi! Em đã giữ trọn lời cậy nhờ của chị năm xưa!'. "
            f"VƯƠNG QUAN (29 tuổi) nghẹn ngào chắp tay bái tạ trời Phật. Khoảnh khắc vỡ òa cảm xúc chấn động đất trời."
        )
        a_s1 = "Dàn nhạc giao hưởng bùng nổ khúc nhạc đoàn viên vĩ đại, tiếng đàn dây dâng trào cảm xúc vỡ òa không kìm nén nổi."
        a_s2 = "Tiếng gió chiều lay động hàng trúc thảo am như hòa chung niềm vui vô tận của ngày tái ngộ."
        a_s3 = "Tiếng cành cúc dại rơi khẽ chạm thềm gỗ, tiếng bước chân vội vã lao vào ôm chầm lấy nhau, tiếng nấc nghẹn ngào."
        a_s4 = "Tiếng Thúy Vân nức nở: 'Chị Kiều ơi!', tiếng Vương Ông Vương Bà nghẹn ngào gọi tên con gái yêu dấu sau 15 năm đằng đẵng."
        p_en = (
            f"Grand emotional reunion climax, {framing}. At the threshold of the bamboo hermitage under warm golden twilight. "
            f"Thúy Kiều (30yo, coarse brown robe, holding wild yellow blossoms) steps out to see her entire family standing before her. "
            f"Kim Trọng (33yo, handsome imperial magistrate, temples dusted with silver hair, tears welling in his devoted eyes) gazes upon her in disbelief. "
            f"Her elderly parents (Vương Ông & Vương Bà, 70yo, white-haired) weep as they rush forward to embrace their lost daughter. "
            f"Sister Thúy Vân and brother Vương Quan join in the overwhelming emotional embrace. Cinematic tour de force of joy and relief. "
            f"Âm thanh: Tiếng khóc nấc nghẹn ngào vì mừng tủi, tiếng gọi tên 'Con ơi!', tiếng gió hoàng hôn vi vu hòa cùng tiếng chim về tổ. "
            f"{AUDIO_GUARD}"
        )
    elif sc_num == 15:
        v_vi = (
            f"Đêm trăng rằm thanh tịnh vằng vặc soi tỏ thảo am và thủy đình họ Vương. Gia đình quây quần ấm cúng bên bàn trà sen. "
            f"Kiều ngồi bên Kim Trọng, mười ngón tay lướt nhẹ trên phím đàn tỳ bà. Khúc đàn đêm nay không còn là tiếng sầu bi ai oán năm xưa, "
            f"mà hóa thành bản hòa tấu thanh tân, trong trẻo như tiếng suối ngọc đầu non, an nhiên ngộ đạo giữa đất trời. "
            f"Kiều nhìn Kim Trọng bằng nụ cười tri âm thoát tục: 'Chữ tình xin để trọn đời tri giao, chẳng trong chăn gối cũng ngoài cầm thơ'. "
            f"Kim Trọng nâng chén trà mỉm cười thấu suốt. Khung hình từ từ nâng cao lên bầu trời đêm trăng sáng vằng vặc, khép lại khúc tráng ca 15 năm."
        )
        a_s1 = "Khúc đàn tỳ bà thanh tân an nhiên tuyệt đỉnh, hòa cùng dàn nhạc giao hưởng khép lại thiên trường ca THẬP NGŨ NIÊN oanh liệt."
        a_s2 = "Tiếng trăng thu tĩnh mịch, tiếng gió nhẹ thoảng qua hương hoa sen thơm ngát, tiếng dế đêm thanh bình."
        a_s3 = "Tiếng móng gảy đàn tỳ bà trong trẻo thánh thót, tiếng chén trà gốm sứ đặt nhẹ xuống khay gỗ."
        a_s4 = "Tiếng ngâm thơ vĩ thanh ngân vang: 'Chữ tình xin để trọn đời tri giao... Thiện căn ở tại lòng ta, Chữ tâm kia mới bằng ba chữ tài!'."
        p_en = (
            f"Grand cinematic finale and transcendent epilogue, {framing}. Luminous full moon night over an ancient lakeside pavilion. "
            f"Thúy Kiều (31yo, dressed in immaculate white celestial silk) plays an ancient pipa lute, her music now serenely joyful, "
            f"pure, and spiritually enlightened. Across from her sits Kim Trọng (34yo), sharing a warm cup of lotus tea and a deep, "
            f"reverent smile of lifelong platonic soulmates ('Tri kỷ ngoài cầm thơ'). Behind them, the peaceful silhouette of their family. "
            f"The camera pulls backward and slowly ascends into the star-studded night sky overlooking the silvery moonlit landscape. "
            f"Masterpiece 8k cinema, enduring emotional beauty. "
            f"Âm thanh: Tiếng đàn tỳ bà trong trẻo thanh thoát như giọt sương mai, tiếng gió hương sen nhè nhẹ, tiếng thơ ngâm vĩ thanh sâu lắng. "
            f"{AUDIO_GUARD}"
        )
    else:
        v_vi = (
            f"{sc['title']} - Khung hình điện ảnh phân đoạn {s_idx:02d}. "
            f"Không gian {sc['loc']}. Nhân vật {sc['chars']}. "
            f"Nội dung trọng tâm: {sc['theme']} Cử chỉ, nét mặt và góc máy duy trì chuyển động liền mạch Head-Tail."
        )
        a_s1 = "Dàn nhạc giao hưởng điện ảnh kết hợp nhạc cụ cổ phong tỳ bà và sáo trúc."
        a_s2 = "Âm cảnh môi trường vật lý tự nhiên: tiếng gió sông Tiền Đường, tiếng chuông mõ thảo am, tiếng lá trúc xào xạc."
        a_s3 = f"Tiếng foley chi tiết khớp hành động khung hình shot {s_idx:02d}."
        a_s4 = "[KHÓA KHẨU HÌNH BẮT BUỘC]: Đôi môi nhân vật trong khung hình khép chặt tự nhiên, không mấp máy."
        p_en = (
            f"Cinematic historical drama, {framing}. Scene at {sc['loc']}. Featuring {sc['chars']}. "
            f"{sc['theme']} Authentic ancient Vietnamese Le-Mac/Ming dynasty costumes and architecture, "
            f"atmospheric lighting, 35mm film grain, masterclass production design, photorealistic 8k render. "
            f"Âm thanh: Âm cảnh môi trường tự nhiên, foley bước chân và chuyển động y phục. "
            f"{AUDIO_GUARD}"
        )

    action_summary = f"{sc['title']} - Phân cảnh {s_idx:02d}/{sc['shots']:02d}"
    prompt_muse = p_en
    prompt_banana = (
        f"Masterpiece 8k cinematic still, 720p resolution 16:9, medium close-up or cinematic wide framing. "
        f"{sc['loc']}. Characters: {sc['chars']}. Authentic ancient Vietnamese aesthetics (Áo Giao Lĩnh, nâu sồng am mây, "
        f"thuyền chài sông Tiền Đường, trượng phu tượng đồng, mũ miện quan triều). {sc['theme']} Dramatic natural lighting, photorealistic."
    )

    return {
        "shot_id": sid,
        "scene_num": sc_num,
        "shot_index": s_idx,
        "framing": framing,
        "visual_vi": v_vi,
        "audio_stem1": a_s1,
        "audio_stem2": a_s2,
        "audio_stem3": a_s3,
        "audio_stem4": a_s4,
        "action_summary": action_summary,
        "prompt_muse": prompt_muse,
        "prompt_banana": prompt_banana
    }

def build_ep06_screenplay_and_prompts():
    print("🎬 BẮT ĐẦU MỞ RỘNG KỊCH BẢN & BỘ PROMPT TẬP 6 LÊN 190 SHOTS CHUẨN HOLLYWOOD (GRAND FINALE)...")

    all_shots = []
    screenplay_lines = [
        "# KỊCH BẢN PHIM ĐIỆN ẢNH - TẬP 6 (ĐẠI KẾT CỤC): HOÀN NGUYÊN TÁI NGỘ (HỒN ĐOẠN TIỀN ĐƯỜNG & ĐOÀN VIÊN THANH TỊNH)",
        "## DỰ ÁN AI CINEMA: THẬP NGŨ NIÊN (THE FIFTEEN SPRINGS)",
        "",
        "> **Tập phim**: Tập 6 / 6 Tập (Thời lượng: 31.7 Phút - 190 Shots - 15 Cảnh - 3 Hồi Chuẩn Hollywood)",
        "> **Mốc thời gian**: Năm thứ mười hai đến năm thứ mười lăm triều Gia Tĩnh (Thúy Kiều 27 - 31 tuổi, Kim Trọng 33 - 34 tuổi)",
        "> **Tác giả kiêm Chủ sở hữu IP**: **NGUYỄN SĨ SƠN** (Sinh ngày: 08/08/1990, CCCD: 031090010018)",
        "> **Nguyên tác văn học**: *Đoạn Trường Tân Thanh - Truyện Kiều* của Đại thi hào Nguyễn Du (Câu 2531 - 3254, Public Domain)",
        "> **Chuẩn kiểm duyệt & An toàn bản quyền**: 100% YouTube Green Dollar Compliance (Bronze Statue & Silk Ribbon Metaphor)",
        "> **Chỉ thị âm thanh & Diễn xuất**: 4-Stem Architecture, Anti-Male-Tears Directive, Lip-Sync Guard Khóa khẩu hình O.S.",
        "",
        "---",
        "",
        "### BẢNG MA TRẬN 15 CẢNH QUAY TẬP 6 (SCENE BREAKDOWN MATRIX)",
        "| Scene ID | Hồi | Tiêu Đề Cảnh | Số Shot | Thời Lượng | Trọng Tâm Nghệ Thuật |",
        "| :--- | :---: | :--- | :---: | :---: | :--- |"
    ]

    for sc in SCENES_META:
        dur = sc["shots"] * 10
        mins = dur // 60
        secs = dur % 60
        screenplay_lines.append(
            f"| `ep06_scene{sc['num']:02d}` | Hồi {sc['act']} | {sc['title']} | {sc['shots']} shots | {mins:02d}m{secs:02d}s | {sc['theme'][:50]}... |"
        )

    screenplay_lines.extend([
        "",
        "---",
        ""
    ])

    current_act = 0
    act_names = {
        1: "HỒI 1: CÁI CHẾT BI TRÁNG CỦA TỪ HẢI - TƯỢNG ĐỒNG SA TRƯỜNG & TIỆC HẦU ĐÀN OAN KHỐC (00:00 - 10:20)",
        2: "HỒI 2: DÒNG TIỀN ĐƯỜNG CUỒN CUỘN SÓNG TRÀO, CHIẾC LƯỚI TỪ BI & THẢO AM THANH TỊNH (10:20 - 20:40)",
        3: "HỒI 3: MƯỜI LĂM NĂM TÌM KIẾM, ĐẠI TRÙNG PHÙNG & VĨ THANH TÌNH TRI KỶ THANH TÂN (20:40 - 31:40)"
    }

    muse_prompts_dict = {}
    banana_prompts_dict = {}

    for sc in SCENES_META:
        if sc["act"] != current_act:
            current_act = sc["act"]
            screenplay_lines.extend([
                f"## {act_names[current_act]}",
                "",
                "---",
                ""
            ])

        screenplay_lines.extend([
            f"### CẢNH {sc['num']:02d}: {sc['slug']} - {sc['title'].upper()}",
            f"- **Bối cảnh**: {sc['loc']}",
            f"- **Nhân vật**: {sc['chars']}",
            f"- **Chủ đề cốt lõi**: {sc['theme']}",
            f"- **Quy mô phân rã**: {sc['shots']} Shots (Mỗi shot 10 giây chuẩn I2V Head-Tail)",
            ""
        ])

        for s_idx in range(1, sc["shots"] + 1):
            detail = generate_ep06_shot_details(sc, s_idx)
            all_shots.append(detail)
            sid = detail["shot_id"]

            muse_prompts_dict[sid] = {
                "scene": f"ep06_scene{sc['num']:02d}",
                "shot": sid,
                "title": detail["action_summary"],
                "motion_prompt": detail["prompt_muse"],
                "audio_guard": AUDIO_GUARD,
                "framing": detail["framing"],
                "duration_seconds": 10,
                "resolution": "1280x720",
                "format": "16:9 MP4"
            }

            banana_prompts_dict[sid] = {
                "shot_id": sid,
                "prompt": detail["prompt_banana"],
                "aspect_ratio": "16:9",
                "resolution": "1280x720",
                "reference_character": "Thúy Kiều / Kim Trọng / Từ Hải / Giác Duyên"
            }

            screenplay_lines.extend([
                f"#### Shot {sid} ({detail['framing']})",
                f"**Thị giác (Visual Motion - 10s)**: {detail['visual_vi']}",
                "",
                "**Âm thanh 4-Stems (Cinematic Sound Architecture)**:",
                f"- *Stem 1 (Score/BGM)*: {detail['audio_stem1']}",
                f"- *Stem 2 (Ambience)*: {detail['audio_stem2']}",
                f"- *Stem 3 (Foley/SFX)*: {detail['audio_stem3']}",
                f"- *Stem 4 (Voice/Lip-Sync Guard)*: {detail['audio_stem4']}",
                "",
                f"**Muse Motion Prompt**: `{detail['prompt_muse']}`",
                ""
            ])

    muse_prompts_wrapper = {
        "episode": "ep06",
        "episode_num": 6,
        "project_name": "THẬP NGŨ NIÊN",
        "ai_video_engine": "Muse.ai",
        "version": "2.0_Modular_Episode",
        "general_settings": {
            "format": "16:9 Landscape MP4",
            "resolution": "1280x720",
            "frame_rate": 24,
            "motion_level": "medium",
            "shot_duration_seconds": 10
        },
        "motion_prompts": muse_prompts_dict
    }

    banana_prompts_wrapper = {
        "episode": "ep06",
        "episode_num": 6,
        "project_name": "THẬP NGŨ NIÊN",
        "ai_image_engine": "Gemini Banana / Google Imagen 3",
        "master_style_anchor": "Vietnamese historical drama, cinematic chiaroscuro lighting, 720p 16:9",
        "prompts": banana_prompts_dict
    }

    # Ghi Screenplay
    with open(SCREENPLAY_PATH, "w", encoding="utf-8") as f:
        f.write("\n".join(screenplay_lines))
    print(f"✓ Đã ghi kịch bản phân cảnh Tập 6: {SCREENPLAY_PATH.relative_to(BASE_DIR)} ({SCREENPLAY_PATH.stat().st_size // 1024} KB)")

    # Ghi Muse Prompts
    with open(MUSE_PROMPTS_PATH, "w", encoding="utf-8") as f:
        json.dump(muse_prompts_wrapper, f, ensure_ascii=False, indent=2)
    print(f"✓ Đã ghi bộ Motion Prompts Muse Tập 6: {MUSE_PROMPTS_PATH.relative_to(BASE_DIR)} ({len(muse_prompts_dict)} shots)")

    # Ghi Banana Prompts
    with open(BANANA_PROMPTS_PATH, "w", encoding="utf-8") as f:
        json.dump(banana_prompts_wrapper, f, ensure_ascii=False, indent=2)
    print(f"✓ Đã ghi bộ Image Prompts Banana Tập 6: {BANANA_PROMPTS_PATH.relative_to(BASE_DIR)} ({len(banana_prompts_dict)} shots)")

    # Cập nhật Manifest
    update_manifest(len(all_shots), muse_prompts_dict)

def update_manifest(total_shots, muse_prompts_dict):
    manifest = {
        "episode_id": "ep06",
        "title": "Hoàn Nguyên Tái Ngộ (Hồn Đoạn Tiền Đường & Đoàn Viên Thanh Tịnh)",
        "duration_minutes": 31.7,
        "total_shots": total_shots,
        "total_scenes": len(SCENES_META),
        "status": "ready_for_batch_render",
        "scenes": []
    }

    rendered_shots = [
        "ep06_scene01_shot01", "ep06_scene01_shot02", "ep06_scene01_shot03", "ep06_scene01_shot04",
        "ep06_scene02_shot01", "ep06_scene02_shot02", "ep06_scene03_shot01", "ep06_scene03_shot02"
    ]

    for sc in SCENES_META:
        sc_num = sc["num"]
        sc_id = f"ep06_scene{sc_num:02d}"
        shot_list = [f"ep06_scene{sc_num:02d}_shot{i:02d}" for i in range(1, sc["shots"] + 1)]
        rendered_in_sc = [s for s in shot_list if s in rendered_shots]

        manifest["scenes"].append({
            "scene_id": sc_id,
            "scene_num": sc_num,
            "act": sc["act"],
            "title": sc["title"],
            "shots_count": sc["shots"],
            "shots": shot_list,
            "rendered_count": len(rendered_in_sc),
            "is_complete": len(rendered_in_sc) == sc["shots"]
        })

    with open(MANIFEST_PATH, "w", encoding="utf-8") as f:
        json.dump(manifest, f, ensure_ascii=False, indent=2)
    print(f"✓ Đã cập nhật manifest.json cho Tập 6! (Tổng số shot: {total_shots})")

if __name__ == "__main__":
    build_ep06_screenplay_and_prompts()
