File size: 5,220 Bytes
72f552e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Style registry β€” maps style names to LoRA sources.

Each style can point to a local .safetensors file or a HuggingFace Hub repo.
pipe.load_lora_weights() handles both transparently.
"""

STYLES = {
    "Sunset Coastal Drive": {
        "source": "samuelsattler/warm-sunset-lora",
        "weight_name": "pytorch_lora_weights.safetensors",
        "weight": 1.0,
        "trigger": "sks",
        "description": "Golden hour warmth, sun flares, silhouettes, warm color grading",
        "quality_suffix": "8K, cinematic, golden hour glow, warm volumetric light, lens flare, shallow depth of field",
        "image_prompt_guidance": (
            "SETTING β€” Coastal sunset drive:\n"
            "The shared world is a drive along a coastal highway as the sun "
            "sets. All scenes take place in or around this journey β€” a car "
            "cruising along cliffs above the ocean, waves crashing against "
            "rocks below, wind whipping through open windows, palm trees "
            "swaying overhead, the sun sinking into the sea on the horizon. "
            "No humans visible β€” focus on the car, the road, the ocean, "
            "and the landscape. Every shot must have motion: wheels turning, "
            "waves rolling, sun flares shifting, clouds drifting."
        ),
    },
    "Rainy City Night": {
        "source": "artificialguybr/filmgrain-redmond-filmgrain-lora-for-sdxl",
        "weight_name": "FilmGrainRedmond-FilmGrain-FilmGrainAF.safetensors",
        "weight": 0.8,
        "trigger": "FilmGrainAF",
        "description": "35mm film grain, moody color grading, cinematic lighting",
        "quality_suffix": "8K, cinematic, shot on 35mm film, dramatic rim lighting, high contrast, shallow depth of field",
        "image_prompt_guidance": (
            "SETTING β€” Rainy city at night:\n"
            "The shared world is a walk through a rain-soaked city after dark. "
            "All scenes take place on these streets β€” rain streaking through "
            "streetlights, puddles reflecting neon signs, steam rising from "
            "grates, traffic passing with blurred headlights, wet umbrellas, "
            "rain hammering awnings, water streaming down windows. "
            "No humans visible β€” focus on the environment, the rain, the "
            "reflections, and the city itself. Every shot must have motion: "
            "rain falling, cars passing, lights flickering, water flowing "
            "through gutters."
        ),
    },
    "Cyberpunk": {
        "source": "jbilcke-hf/sdxl-cyberpunk-2077",
        "weight_name": "pytorch_lora_weights.safetensors",
        "weight": 0.9,
        "trigger": "cyberpunk-2077",
        "description": "Neon-lit cityscapes, dark futuristic vibes, glowing signs",
        "quality_suffix": "8K, cinematic, neon-drenched, volumetric fog, sharp details, high contrast, dramatic lighting",
        "image_prompt_guidance": (
            "SETTING β€” Cyberpunk nightlife cityscape:\n"
            "The shared world is a futuristic megacity at night. All scenes "
            "take place in this neon-drenched urban sprawl β€” holographic "
            "billboards flickering on skyscrapers, flying vehicles streaking "
            "between towers, neon signs buzzing and glitching, rain falling "
            "through laser grids, steam erupting from vents, LED-lit market "
            "stalls with flickering displays. "
            "No humans visible β€” focus on the city, the machines, the neon, "
            "and the architecture. Every shot must have motion: vehicles "
            "flying, signs flickering, rain falling, smoke drifting, lights "
            "pulsing."
        ),
    },
    "Watercolour Harbour": {
        "source": "ostris/watercolor_style_lora_sdxl",
        "weight_name": "watercolor_v1_sdxl.safetensors",
        "weight": 1.4,
        "trigger": "",
        "description": "Soft watercolor painting style, fluid washes, gentle blending",
        "quality_suffix": "8K, watercolor painting, soft painterly washes, fluid blending, delicate brushstrokes, atmospheric",
        "image_prompt_guidance": (
            "SETTING β€” Stormy harbour village:\n"
            "The shared world is a coastal fishing village during a storm. "
            "All scenes take place in and around this harbour β€” waves "
            "crashing against stone sea walls, fishing boats rocking and "
            "pulling at their moorings, rain sweeping across the harbour "
            "in sheets, wind tearing through flags and sails, seabirds "
            "wheeling against dark clouds, lanterns swinging on posts, "
            "water pouring off rooftops into cobblestone streets. "
            "No humans visible β€” focus on the sea, the boats, the storm, "
            "and the village. Every shot must have motion: waves surging, "
            "boats swaying, rain lashing, flags snapping in the wind."
        ),
    },
}


def get_style(name: str) -> dict:
    """Look up a style by name. Raises KeyError if not found."""
    return STYLES[name]


def style_names() -> list[str]:
    """Return list of available style names for UI dropdowns."""
    return list(STYLES.keys())