| """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()) | |