-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathwan22_prompt_selector.py
More file actions
135 lines (117 loc) · 5.25 KB
/
Copy pathwan22_prompt_selector.py
File metadata and controls
135 lines (117 loc) · 5.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import json
class Wan22PromptSelector:
CATEGORY = "Wan2.2/提示词生成"
FUNCTION = "generate_prompt"
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("提示词",)
# 动态控制模块选项(空选项及非空选项均基于文档内容)
运动场景选项 = [
"——", # 空选项
"跑步", "滑滑板", "踢足球", "网球", "乒乓球",
"滑雪", "篮球", "橄榄球", "顶碗舞", "侧手翻"
]
人物情绪选项 = [
"——", # 空选项
"愤怒", "恐惧", "高兴", "悲伤", "惊讶",
"忧虑", "困惑", "欣慰", "狂喜", "绝望",
"平静", "期待", "羞涩", "厌恶", "自豪"
]
运镜方式选项 = [
"——", # 空选项
"镜头推进", "镜头拉远", "镜头左右移动", "镜头上摇",
"手持镜头", "跟随镜头", "环绕运镜"
]
# 影视级美学控制模块选项(基于文档影视级美学控制章节)
光源类型选项 = [
"——", # 空选项
"日光", "人工光", "月光", "实用光", "火光",
"荧光", "阴天光", "混合光", "晴天光"
]
光线类型选项 = [
"——", # 空选项
"柔光", "硬光", "顶光", "背光", "底光", "边缘光", "侧光",
"低对比度光", "高对比度光", "剪影光", "黎明光", "黄昏光", "日落光"
]
镜头类型选项 = [
"——", # 空选项
"干净的单人镜头", "双人镜头", "三人镜头", "群像镜头", "定场镜头"
]
焦距选项 = [
"——", # 空选项
"中焦距", "广角", "长焦", "望远", "超广角-鱼眼"
]
色调选项 = [
"——", # 空选项
"暖色调", "冷色调", "高饱和度", "低饱和度"
]
# 风格化模块选项(基于文档风格化章节)
视觉风格选项 = [
"——", # 空选项
"赛博朋克", "勾线插画", "废土风格", "毛毡风格",
"3D卡通", "像素风格", "木偶动画", "水彩画"
]
特效镜头选项 = [
"——", # 空选项
"移轴摄影", "延时拍摄"
]
# 场景类型选项(基于文档场景定义)
场景类型选项 = [
"——", # 空选项
"自然场景(田野/森林/山脉)", "城市场景(街道/室内/建筑)",
"虚构场景(异世界/太空/梦境)"
]
# 节点输入参数定义
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"场景类型": (s.场景类型选项, {"default": "——"}),
"运动场景": (s.运动场景选项, {"default": "——"}),
"人物情绪": (s.人物情绪选项, {"default": "——"}),
"运镜方式": (s.运镜方式选项, {"default": "——"}),
"光源类型": (s.光源类型选项, {"default": "——"}),
"光线类型": (s.光线类型选项, {"default": "——"}),
"镜头类型": (s.镜头类型选项, {"default": "——"}),
"焦距": (s.焦距选项, {"default": "——"}),
"色调": (s.色调选项, {"default": "——"}),
"视觉风格": (s.视觉风格选项, {"default": "——"}),
"特效镜头": (s.特效镜头选项, {"default": "——"}),
}
}
# 提示词生成逻辑(遵循文档提示词公式)
def generate_prompt(self, 场景类型, 运动场景, 人物情绪, 运镜方式,
光源类型, 光线类型, 镜头类型, 焦距, 色调, 视觉风格, 特效镜头):
# 筛选非空选项
elements = [
场景类型 if 场景类型 != "——" else "",
f"主体{运动场景}" if 运动场景 != "——" else "",
f"呈现{人物情绪}" if 人物情绪 != "——" else "",
运镜方式 if 运镜方式 != "——" else "",
光源类型 if 光源类型 != "——" else "",
光线类型 if 光线类型 != "——" else "",
镜头类型 if 镜头类型 != "——" else "",
焦距 if 焦距 != "——" else "",
色调 if 色调 != "——" else "",
f"{视觉风格}风格" if 视觉风格 != "——" else "",
特效镜头 if 特效镜头 != "——" else ""
]
# 去除空字符串并拼接
prompt_parts = [e for e in elements if e]
prompt = ",".join(prompt_parts) if prompt_parts else ""
return (prompt,)
# 节点注册(插件名称尾部加入“昊纯制作”)
NODE_CLASS_MAPPINGS = {
"Wan22PromptSelector": Wan22PromptSelector
}
NODE_DISPLAY_NAME_MAPPINGS = {
"Wan22PromptSelector": "Wan2.2提示词选取器 昊纯制作"
}
# 插件元数据(名称包含“昊纯制作”)
manifest = {
"name": "Wan2.2提示词选取器 昊纯制作",
"version": "1.7",
"description": "基于Wan2.2视频生成提示词指南开发",
"author": "昊纯"
}
with open("manifest.json", "w", encoding="utf-8") as f:
json.dump(manifest, f, ensure_ascii=False, indent=2)