#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""applycute.py — 生成「可爱版」全部提示词清单（供小朋友观看）。

设计原则：
  · Q 版二头身、圆脸大眼、腮红、笑意；线条圆润、童趣绘本感
  · **彻底剔除恐怖元素**：无獠牙、无白骨、无骷髅、无鬼火、无血、无阴森幽绿、无狰狞
    （例：沙僧的骷髅念珠 → 大佛珠；白骨夫人 → 白白圆圆的小可爱；枯骨林 → 开满白花的小树林）
  · 保留 86 版《西游记》可识别特征，但全部萌化
  · 明亮柔和的淡彩水墨，温馨治愈
输出：prompts/01-风格测试-可爱版.json、02-人物设定-可爱版.json、
      03-妖怪设定-可爱版.json、04-场景设定-可爱版.json
"""
import json, os

ROOT = os.path.dirname(os.path.abspath(__file__))
os.chdir(ROOT)

CUTE = ("中国水墨动画风格，宣纸质感，明亮柔和的淡彩设色，Q版二头身可爱造型，圆脸大眼、腮红、笑容，"
        "线条圆润，童趣绘本感，温馨治愈，**画面温馨明亮，绝无恐怖、惊悚、血腥与阴暗元素，适合幼儿观看**。"
        "造型保留央视1986年版《西游记》经典形象的可识别特征，但全部萌化处理。")

CUTE_SCENE = ("中国水墨动画风格，宣纸质感，明亮柔和的淡彩设色，童话绘本感的可爱画风，圆润的云朵与山石，"
              "暖阳、花草、小鸟点缀，温馨治愈，**绝无恐怖、阴森、血腥元素，适合幼儿观看**。"
              "取材自央视1986年版《西游记》的经典场景，但全部萌化处理。")

CUTE_TEST = ("中国水墨动画风格，宣纸质感，明亮柔和的淡彩设色，Q版二头身可爱造型，圆脸大眼、腮红、笑容，"
             "童趣绘本感，温馨治愈，绝无恐怖元素。主体是萌化的小孙悟空：戴小小的凤翅紫金冠插两根短短雉鸡翎，"
             "金色小甲配虎皮小短裙，扛着细巧的金箍棒。")

CHARS = {
    "人物-01-孙悟空-大圣装": ("小悟空大圣装：圆脸大眼的萌猴王，戴小小的凤翅紫金冠插两根短短雉鸡翎，穿金色小甲配虎皮小短裙，扛着细巧的金箍棒，神气地叉腰。", "3:4"),
    "人物-02-孙悟空-行者装": ("小悟空行者装：萌猴王额头一只小金箍，赭黄小僧衣配虎皮小裙，笑眼弯弯，拄着金箍棒站在小石头上。", "3:4"),
    "人物-03-唐三藏": ("小唐僧：白白净净的小和尚，戴小毗卢帽，穿红金小袈裟，手拿小锡杖与小钵盂，温和地微笑。", "3:4"),
    "人物-04-猪八戒": ("小八戒：圆滚滚的粉色小猪，大耳朵大鼻子，笑呵呵，穿小僧衣挺着圆肚皮，扛着小钉耙。", "3:4"),
    "人物-05-沙悟净": ("小沙僧：蓝脸膛的小和尚，浓眉毛配卷卷胡须，颈挂一串圆圆的大佛珠（不戴骷髅），挑着小扁担与小月牙铲，憨厚地笑。", "3:4"),
    "人物-06-白龙马": ("小白龙马：圆润的小白马，蓬松银白鬃毛，水汪汪大眼睛，蓝色小鞍具挂红缨小铃铛，可爱地昂着头。", "3:4"),
    "人物-07-如来佛祖": ("小如来：圆脸慈祥的金色小佛，螺发小发髻，眉心一点白毫，披红袈裟盘坐在小莲台上，笑眯眯。", "3:4"),
    "人物-08-观音菩萨": ("小观音：白衣小仙女，圆圆脸笑眼弯弯，手拿小小的净瓶与杨柳枝，脚踏一朵小云。", "3:4"),
    "群像-师徒四人西行": ("师徒四人一马排成小队伍走在小路上，圆滚滚可爱，互相牵着手，暖阳、小花与小蝴蝶相伴。", "16:9"),
}

MONSTERS = {
    "妖怪-01-寅将军-虎精": "小虎妖：圆脸大眼睛的胖小老虎，穿小皮甲，拿两把圆头小刀，得意地笑。",
    "妖怪-02-熊山君-熊罴精": "小熊妖：毛茸茸的胖小黑熊，戴小铁甲，扛一把圆头玩具大斧，憨憨地笑。",
    "妖怪-03-黄风怪-黄毛貂鼠": "小黄鼠妖：黄色小貂鼠，圆耳朵大眼睛，穿小黄道袍，拿小风袋吹出一朵打着卷的小旋风。",
    "妖怪-04-白骨夫人": "小白骨小仙：白白圆圆的小可爱，头上戴一朵小花，穿干净的白纱小裙，笑眼弯弯，提着一盏暖黄小灯笼。",
    "妖怪-05-金角大王": "小金角童：额头一只小小的金角，道童打扮，捧一只小葫芦，得意地笑。",
    "妖怪-06-银角大王": "小银角童：额头两只小银角，银发小童，拿小剑与小瓶子，调皮地笑。",
    "妖怪-07-压龙大仙-九尾老狐": "小九尾狐：雪白蓬松的九条小尾巴，圆脸大眼睛，穿漂亮的小紫袍，拄着小小拐杖，笑得暖暖的。",
    "妖怪-08-灵感大王-金鱼精": "小金鱼妖：红红圆圆的胖金鱼，戴小水甲，抱一把小铜锤，在水泡中游来游去。",
    "妖怪-09-黄袍怪-奎木狼": "小狼妖：圆耳朵的小灰狼，穿黄色小袍子配小甲，扛着小棒子，害羞地笑。",
    "妖怪-10-玉面狐狸": "小玉面狐狸姑娘：一个可爱的小姑娘，头顶一对毛茸茸的狐狸耳朵，身后一条蓬松的雪白狐狸尾巴，穿粉粉的小宫装，手拿小团扇，笑得甜甜的。",
    "妖怪-11-红鳞大蟒": "小红蟒：圆滚滚的小红蛇妖，大眼睛，拿一柄小小长矛，吐着可爱的小信子。",
    "妖怪-12-女儿国国王": "小女王：圆圆脸的小公主，戴小凤冠，穿红金小宫装，手拿小孔雀扇，端庄又可爱。",
    "妖怪-13-车迟国三道": "三个小道士妖怪：圆脸小老虎、小鹿与小羊并排站，各穿小道士袍，拿小剑、小拂尘与小铃铛。",
    "妖怪-14-红孩儿": "小红孩儿：红头发的小男孩，戴小金项圈，穿红小战袄，拿小尖枪，脚边飘着一朵小小的火云。",
    "妖怪-15-铁扇公主-罗刹女": "小铁扇公主：圆脸小仙女，绿红小劲装，拿着一把大大的绿色小扇子，神气地扇风。",
    "妖怪-16-牛魔王": "小牛魔王：圆脸小牛，头顶两只小弯角，穿黑铁小甲，扛一根小铁棍，憨憨地笑。",
    "妖怪-17-九头虫": "小九头虫：圆圆的小鸟妖，肩后开着九只毛茸茸的小脑袋，穿绿水纹小甲，拿一把小叉子。",
    "妖怪-18-黄狮精": "小黄狮精：金色鬃毛的小狮子，穿小皮甲，抱着一把小钉耙，笑得得意。",
    "妖怪-19-白毛老鼠精": "小白鼠姑娘：白白圆圆的小老鼠，穿小纱裙，端着一支亮亮的小蜡烛，眼睛亮晶晶。",
    "妖怪-20-蝎子精-琵琶精": "小蝎子精：圆脸小姑娘，穿紫红小裙，怀里抱一把小琵琶，身后一条圆圆的小尾巴，害羞地笑。",
    "妖怪-21-六耳猕猴": "小六耳猕猴：跟小悟空长得很像的萌猴子，耳朵长一点点，穿小僧衣，拿一根小棒子，调皮地眨眼。",
    "妖怪-22-赛太岁-金毛犼": "小金毛犼：圆脸小金狮子狗，戴小金甲，脖子上挂一个小铃铛，呼呼吹起一小阵风。",
    "妖怪-23-玉兔精": "小玉兔：白白圆圆的小兔子姑娘，长长兔耳朵，穿月白小纱裙，抱着小红绣球，身后一弯小月亮。",
    "妖怪-24-白鹿精-比丘国国丈": "小白鹿：圆脸小鹿，头顶小鹿角，穿白色小袍子，拄一根小拐杖，身边跟着一只小鹿。",
    "妖怪-25-百眼魔君-乌袍君": "小乌袍道士：穿黑紫小袍子的小道士，圆圆脸，身上有许多会发光的小圆点像小星星，拿一柄小剑，笑着眨眼。",
    "妖怪-26-孤直公-柏树精": "小柏树精：圆脸小树精爷爷，头发像小柏叶，戴一顶小叶子帽，手里一卷小诗书，笑眯眯。",
    "妖怪-27-辟寒大王-犀牛精": "小犀牛大王：圆滚滚的小青犀牛，头顶一只小角，穿小铜甲，扛一把小月牙斧，憨憨地笑。",
    "妖怪-28-金斑豹": "小金斑豹：圆脸大眼睛的小花豹，金色底毛带小黑斑，穿小皮甲，从树后探出圆圆的爪子，好奇地眨眼睛，像在玩捉迷藏。",
}

SCENES = {
    "场景-01-花果山水帘洞": "花果山：温柔的小瀑布像白绸带，崖上开着桃花，小猴子们在石桥上玩耍。",
    "场景-02-天宫瑶池": "天宫瑶池：金瓦小宫殿飘在软软的彩云上，池里荷花与小鸭子，仙鹤飞过。",
    "场景-03-五行山": "可爱的小石头山：圆圆的大石头像手指，长满青苔与小草，山脚一条小路与小花。",
    "场景-04-鹰愁涧": "明亮的小山涧：清清的溪水，圆润的白石头，岸边小松树与小鸟。",
    "场景-05-流沙河": "黄澄澄的温柔大河：圆圆的沙丘，小芦苇，河上漂着一只小木筏。",
    "场景-06-黄风岭": "黄色的小山岭：圆圆的小土丘，打着卷的小小旋风，路边开着黄色野花。",
    "场景-07-白虎岭枯骨林": "开满白花的小树林：白色小花像雪，圆圆的树冠，飘着几片柔软的花瓣，小路弯弯。",
    "场景-08-平顶山莲花洞": "可爱的小山洞：洞口像一朵大莲花，洞外垂着青藤，石阶上摆着小灯笼。",
    "场景-09-宝象国宫殿": "小宫殿夜景：红廊金顶，暖黄的小宫灯成排，殿前有石头小象，天上挂着圆月亮。",
    "场景-10-七绝山稀柿衕": "挂满小红柿子的山谷：两侧是圆圆的小山坡，果树枝头结满柿子，小路铺着落叶。",
    "场景-11-西梁女国宫苑": "小宫苑：曲桥回廊，池里粉色荷花与睡莲，垂柳依依，薄暮的粉霞。",
    "场景-12-车迟国斗法台": "小法坛：圆圆的石台，香炉冒着可爱的小烟圈，彩旗飘飘，天边一道小彩虹。",
    "场景-13-火焰山": "温柔的小红山：圆圆的红色小山丘，山间跳着小小的火苗像小花，山下绿洲与小树。",
    "场景-14-碧波潭水府": "碧绿的小水府：水下小宫殿冒着珠光泡泡，珊瑚与小彩鱼，水草轻轻摇。",
    "场景-15-小雷音寺": "小寺庙：金顶小塔与红柱，门口两只圆滚滚的小石狮子，屋檐下挂着风铃。",
    "场景-16-木仙庵竹林": "小竹林：翠绿修竹，竹影婆娑，青石小案上摆着茶盏与书卷，阳光洒下小光斑。",
    "场景-17-金平府金灯桥": "元宵小灯会：小石拱桥挂满金色与红色小灯笼，河上小画舫，天上放着小烟花。",
    "场景-18-凌云渡": "云海上的小桥：软软的云朵，一道小木桥通向远方金顶，天光温柔。",
    "场景-19-灵山雷音寺": "小雷音寺：金顶小佛寺依着圆润的小山，莲花池与小仙鹤，彩云缭绕，佛光温润。",
}


def dump(path, items):
    json.dump(items, open(path, "w", encoding="utf-8"), ensure_ascii=False, indent=2)
    print(f"{path}: {len(items)} 条")


def base_prefix(ptype, dirprefix):
    """可爱版的统一尾部（画幅与用途说明）"""
    tail = {"char": "角色设定图，全身立绘，正面视角，纯色米黄宣纸背景，无多余元素，高细节。",
            "scene": "宽幅电影级构图，留白通透，高细节。",
            "group": "三人以上并立全身立绘，正面视角，纯色米黄宣纸背景，高细节。"}[ptype]
    return tail


def main():
    items = []
    for i, (name, (desc, ratio)) in enumerate(CHARS.items(), 1):
        ptype = "group" if name.startswith("群像") else "char"
        items.append({"outdir": "02-人物设定-可爱版", "name": f"可爱版-{name}", "ratio": ratio,
                      "prompt": f"{CUTE}{desc}{base_prefix(ptype, '')}"})
    dump("prompts/02-人物设定-可爱版.json", items)

    items = []
    for name, desc in MONSTERS.items():
        items.append({"outdir": "03-妖怪设定-可爱版", "name": f"可爱版-{name}", "ratio": "3:4",
                      "prompt": f"{CUTE}{desc}{base_prefix('char', '')}"})
    dump("prompts/03-妖怪设定-可爱版.json", items)

    items = []
    for name, desc in SCENES.items():
        items.append({"outdir": "04-场景设定-可爱版", "name": f"可爱版-{name}", "ratio": "16:9",
                      "prompt": f"{CUTE_SCENE}{desc}{base_prefix('scene', '')}"})
    dump("prompts/04-场景设定-可爱版.json", items)

    items = [
        {"outdir": "01-风格测试-可爱版", "name": "可爱版-风格A-清新淡彩",
         "ratio": "16:9", "prompt": CUTE_TEST + "背景是开满小花的圆润山丘与软软的云朵，清新淡彩，明快温馨。"},
        {"outdir": "01-风格测试-可爱版", "name": "可爱版-风格B-温暖水彩",
         "ratio": "16:9", "prompt": CUTE_TEST + "背景是暖阳下的金色云霞与圆润小山，暖黄橘粉色调，温柔治愈。"},
        {"outdir": "01-风格测试-可爱版", "name": "可爱版-风格C-国风年画",
         "ratio": "16:9", "prompt": CUTE_TEST + "背景是红金年画风的祥云与小花，喜庆明快，国风童趣，色彩饱满。"},
    ]
    dump("prompts/01-风格测试-可爱版.json", items)


if __name__ == "__main__":
    main()
