This commit is contained in:
DoctorDiffusion
2024-11-04 21:30:26 -05:00
committed by GitHub
parent 35ac5a77b2
commit 2c31fb4ec5
+113 -128
View File
@@ -15,6 +15,10 @@ class VideoPromptGenerator:
return {
"required": {
"subject": ("STRING", {}),
"adjectives": (
["random"] + VideoPromptGenerator.ADJECTIVES,
{"default": "random"},
),
"shot_type": (
["random"] + VideoPromptGenerator.SHOT_TYPE,
{"default": "random"},
@@ -29,6 +33,7 @@ class VideoPromptGenerator:
{"default": "random"},
),
"location": (["random"] + VideoPromptGenerator.LOCATION, {"default": "random"}),
"modifiers": (["random"] + VideoPromptGenerator.MODIFIERS, {"default": "random"}),
"lighting": (
["random"] + VideoPromptGenerator.LIGHTING,
{"default": "random"},
@@ -36,54 +41,59 @@ class VideoPromptGenerator:
},
}
ADJECTIVES = [
"",
"bloody",
"angry",
"fat",
"stoic",
"old",
"cool",
]
SHOT_TYPE = [
"",
"aerial shot",
"bird's-eye view",
"close-up",
"cowboy shot",
"crane shot",
"cut-in",
"cutaway",
"dolly shot",
"dolly zoom left",
"dolly zoom right",
"dutch angle",
"establishing shot",
"extreme close-up",
"extreme long shot",
"eye-level shot",
"follow shot",
"high-angle shot",
"insert shot",
"low-angle shot",
"master shot",
"medium close-up",
"medium shot",
"over-the-shoulder shot",
"pan left",
"pan right",
"point-of-view (POV) shot",
"pull-back shot",
"reaction shot",
"reverse-angle shot",
"tilt up",
"tilt down",
"tracking shot",
"two-shot",
"wide shot",
"aerial shot:",
"bird's-eye view:",
"close-up:",
"crane shot:",
"fpv drone shot:",
"dolly shot:",
"dolly zoom left:",
"dolly zoom right:",
"dutch angle:",
"establishing shot:",
"extreme close-up:",
"extreme long shot:",
"eye-level shot:",
"follow shot:",
"high-angle shot:",
"low-angle shot:",
"medium close-up:",
"medium shot:",
"over-the-shoulder shot:",
"pan left:",
"pan right:",
"point-of-view (POV) shot:",
"pull-back shot:",
"reaction shot:",
"reverse-angle shot:",
"tilt up:",
"tilt down:",
"tracking shot:",
"two-shot:",
"wide shot:",
]
ACTIONS = [
"",
"adjusting clothing",
"crosses a street",
"answering the phone",
"apologizing sincerely",
"arguing intensely",
"asking a question",
"driving a sports car",
"shooting a gun",
"screaming",
"biting lip nervously",
"blinking rapidly",
"brushing hair back",
"shrinking",
"bursting into laughter",
"checking their watch",
"clapping hands excitedly",
@@ -134,18 +144,18 @@ class VideoPromptGenerator:
"fixing gaze intensely",
"rolling eyes",
"crossing legs casually",
"adjusting glasses",
"throws poop at the camera",
"reaching out",
"placing hand on heart",
"taking a deep breath",
"scanning the room",
"mouthing words silently",
"putting hands in pockets",
"shaking hands warmly",
"peeling of thier face",
"playing russian roulette",
"being chased by a killer",
"on a skateboard",
"holding a knife",
"flying an airplane",
"narrowing eyes suspiciously",
"opening a door cautiously",
"holding their head in pain",
"wringing hands nervously",
"sitting on a toilet",
"breaking into a run",
"throwing hands in the air",
"snapping fingers",
@@ -154,11 +164,20 @@ class VideoPromptGenerator:
STYLE = [
"",
"Cinematic",
"cinematic",
"cctv footage",
"surrealism",
"futurism",
"music video"
"1980s horror movie",
"1990s hip hop video",
"documentary",
"futurism",
"3D animation",
"anime",
"cartoon",
"3D render",
"2003 action movie",
"music video",
]
@@ -166,6 +185,9 @@ class VideoPromptGenerator:
"",
"David Fincher",
"Quentin Tarantino",
"Martin Scorsese",
"Steven Spielberg",
"George Lucas",
]
LOCATION = [
@@ -178,12 +200,12 @@ class VideoPromptGenerator:
"at a party",
"at a festival",
"at a concert",
"on persons home planet",
"magical portal with particles",
"on the moon",
"infront of a magical portal with particles",
"in a neon lit city",
"in a cyberpunk city",
"in a fantasy world",
"fashion show",
"at a fashion show",
"at home",
"at work",
"at a cafe",
@@ -201,19 +223,19 @@ class VideoPromptGenerator:
"in a mystical island filled with ancient ruins and hidden treasure",
"in a faraway planet with a unique and alien landscape",
"in a hidden paradise hidden behind a waterfall",
"in a dreamlike world where anything is possible and the impossible is real",
"in a church",
"in a hidden oasis in the desert",
"in a secret underground city",
"in an underwater kingdom",
"in a lost temple in the jungle",
"in a castle in the clouds",
"in a hidden valley in the mountains",
"in a uturistic city on a distant planet",
"in a alien city on a distant planet",
"in a mystical land of eternal twilight",
"Smoke and ash in the air",
"suburban america",
"suburbs",
"slums",
"infront of the USA flag",
"in suburban america",
"in the suburbs",
"in the slums",
"at the sea",
"at the ocean",
"at the lake",
@@ -222,30 +244,33 @@ class VideoPromptGenerator:
"in the labyrinth",
"in a lab"
]
MODIFIERS = [
"",
"glitchy",
"creepy",
"abstract",
"slow-motion",
"static shot",
"retro",
]
LIGHTING = [
"",
"popping colors, popart style",
"bokeh",
"dramatic lighting",
"golden hour",
"shot at golden hour",
"colorful lighting",
"soft lighting",
"studio lighting with strong rim light",
"ambient lighting",
"sun rays",
"cinematic lighting",
"characteristics of the light",
"volumetric lighting",
"natural point rose",
"outdoor lighting",
"soft pastel lighting colors scheme",
"sensual lighting",
"neon lights",
"baroque",
"rokoko",
"rim light, iridescent accents",
"neoclassicism",
"realism",
"fantastic colors",
"accent lighting",
"high key lighting",
@@ -256,87 +281,41 @@ class VideoPromptGenerator:
"multi-colored lighting",
"mood lighting",
"accent lighting",
"projection lighting",
"bioluminiscent",
"anamorphic lens flare",
"sharp focus",
"vivid colors",
"masterpiece",
"colors",
"8k",
"atmospheric",
"cinematic sensual",
"hyperrealistic",
"big depth of field",
"glow effect",
"modelshoot style",
"shallow depth of field",
"hdr",
"dynamic composition",
"broad light",
"natural lighting",
"elegant pose",
"flowing",
"film photo",
"extremely detailed",
"big depth of field",
"matte skin, pores, wrinkles",
"hyperdetailed",
"(abstract:1.3)",
"intricate and low contrast detailed",
"(composition)",
"film grain",
"(8k, RAW photo, best quality, masterpiece:1.2)",
"(realistic, photo-realistic:1.37)",
"beautiful detailed eyes, beautiful detailed lips, a captivating gaze, and an alluring expression",
"beautiful dynamic dramatic dark moody lighting",
"(detailed face:1.3)",
"multilayered realism",
"majestically strides forward toward us with abandon",
"disintegrating moon",
"extremely intricate details",
"anatomical beauty",
"high fantasy",
"detailed skin pores",
"flat color scheme",
"80s music clip background",
"Use a backlighting effect to add depth to the image. impressionistic painting style, john singer sarget, blue pallette",
"(natural skin texture, hyperrealism, soft light, sharp:1.2)",
"(cinematic, teal and orange:0.85)",
"(intricate skin detail:1.3), (wrinkles:1.2),(skin blemishes:1.1),(skin pores:1.1),(detailed face:1.3), (lips slightly parted:1.0)",
"(muted colors, dim colors, soothing tones:1.3), low saturation, (hyperdetailed:1.2)",
"(noir:0.4), (intricate details:1.12), hdr, (intricate details, hyperdetailed:1.15)",
"(neutral colors:1.2), art, (hdr:1.5), (muted colors:1.1), (pastel:0.2), hyperdetailed",
"dramatic lighting",
"((landscape view)), 4k unity, (best illumination)",
"dynamic angle",
"detailed freckles skin",
"movie grain",
"epic composition",
"Tarot Card style",
"(solo focus, one frame)",
"(masterpiece, best quality, ultra-detailed, highres)",
"biopunk",
"dramatic Pull from the ghost of a virtual memory",
"gritty industrial",
"(soothing tones, insane details, intricate details, hyperdetailed,photorealistic,dim subdued lighting)",
]
@staticmethod
def generate_prompt(**kwargs):
components = []
# Get subject
subject = kwargs.get("subject", "")
if subject.lower() == "random":
subject = random.choice(VideoPromptGenerator.SUBJECT) # Ensure SUBJECT list is defined
components.append(subject)
# Get shot type
# Get shot type (first in the prompt)
shot_type = kwargs.get("shot_type", "")
if shot_type.lower() == "random":
shot_type = random.choice(VideoPromptGenerator.SHOT_TYPE)
components.append(shot_type)
# Get adjectives (to appear before subject in the prompt)
adjectives = kwargs.get("adjectives", "")
if adjectives.lower() == "random":
adjectives = random.choice(VideoPromptGenerator.ADJECTIVES)
components.append(adjectives)
# Get subject (after adjectives in the prompt, first in the UI)
subject = kwargs.get("subject", "")
components.append(subject)
# Get location
location = kwargs.get("location", "")
if location.lower() == "random":
@@ -355,7 +334,13 @@ class VideoPromptGenerator:
director = random.choice(VideoPromptGenerator.DIRECTOR)
components.append(f"by {director}")
# Get lighting
# Get Modifiers (before lighting in the prompt)
modifiers = kwargs.get("modifiers", "")
if modifiers.lower() == "random":
modifiers = random.choice(VideoPromptGenerator.MODIFIERS)
components.append(modifiers)
# Get lighting (last element in the prompt)
lighting = kwargs.get("lighting", "")
if lighting.lower() == "random":
selected_lighting = ", ".join(random.sample(VideoPromptGenerator.LIGHTING, random.randint(2, 5)))
@@ -363,16 +348,16 @@ class VideoPromptGenerator:
selected_lighting = lighting
components.append(selected_lighting)
# Join components to form the final prompt
prompt = " ".join(filter(None, components))
print(f"AUTOPROMPT: {prompt}")
return (prompt,)
# Ensure these mappings point to the correct class
# Mappings for ComfyUI
NODE_CLASS_MAPPINGS = {
"VideoPromptGenerator": VideoPromptGenerator,
}
# Human readable names for the nodes
NODE_DISPLAY_NAME_MAPPINGS = {
"VideoPromptGenerator": "Video Prompt Generator",
}
}