stable-diffusion-beautify-prompt - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
stable-diffusion-beautify-prompt (6608B) | |
--- | |
1 #!/usr/bin/env python | |
2 # coding=utf-8 | |
3 # | |
4 # ©2024 Christoph Lohmann <20h at r-36 dot net> | |
5 # | |
6 # This file is published under the terms of the GPLv3. | |
7 # | |
8 | |
9 import os | |
10 import sys | |
11 import getopt | |
12 import time | |
13 from datetime import datetime, timedelta | |
14 import pytz | |
15 import subprocess | |
16 import random | |
17 | |
18 def beautify_prompt(text): | |
19 # TODO: Better background handling? | |
20 #background = "background fireworks and night sky" | |
21 background = None | |
22 modifiers = [None, "cinematic", "hd", "4k", "8k", "3d", "4d", | |
23 "highly detailed", "octane render", "trending artstation… | |
24 "Pixelate", "Blur", "Symmetrical", "Macabre", "at night"] | |
25 beauties = [None, "Beautiful", "Very Beautiful", "Very Very Beau… | |
26 times = [None, "ancient", "futuristic", "modern", "antique", "Re… | |
27 "old-fashioned", "youthful"] | |
28 colors = [None, "colorful", "black and white", "greyscale"] | |
29 lightnings = [None, "daylight", "moonlight", "natural light", "F… | |
30 "Backlight", "Soft light", "Hard light", "Moody light", | |
31 "Dynamic light"] | |
32 styles = [None, | |
33 "Abstract Painting", | |
34 "Acrylic Painting", | |
35 "Action Painting", | |
36 "Aestheticism Painting", | |
37 "Anamorphosis Painting", | |
38 "Art Deco Painting", | |
39 "Art nouveau Painting", | |
40 "Ashcan School Painting", | |
41 "Baroque Painting", | |
42 "Body Painting", | |
43 "Canvas Painting", | |
44 "Cartoon Painting", | |
45 "Chalk Painting", | |
46 "Child's Finger Painting", | |
47 "Chinese Painting", | |
48 "Classicism Painting", | |
49 "Collage Painting", | |
50 "Cubism Painting", | |
51 "Dadaism Painting", | |
52 "De Stijl Painting", | |
53 "Der Blaue Painting", | |
54 "Digital Painting", | |
55 "Drip Painting", | |
56 "Enamel Painting", | |
57 "Encaustic Painting", | |
58 "Expressionism Painting", | |
59 "Figurativism Painting", | |
60 "Fingerpainting Painting", | |
61 "Finger Painting", | |
62 "Fresco Secco Painting", | |
63 "Futurism Painting", | |
64 "Genre Painting", | |
65 "Glitter Glue Painting", | |
66 "Gothic Painting", | |
67 "Gouache Painting", | |
68 "History Painting", | |
69 "Hot Wax Painting", | |
70 "Impressionism Painting", | |
71 "Ink Wash Painting", | |
72 "Japanese Painting", | |
73 "Korean Painting", | |
74 "Landscape Painting", | |
75 "Leaf Painting", | |
76 "Marker Painting", | |
77 "Matte Painting", | |
78 "Miniature Painting", | |
79 "Modernism Painting", | |
80 "Mughal Painting", | |
81 "Mural Painting", | |
82 "Oil Painting", | |
83 "Pastel Painting", | |
84 "Pattachitra Painting", | |
85 "Photorealism Painting", | |
86 "Rajasthan Painting", | |
87 "Realism Painting", | |
88 "Reverse Glass Painting", | |
89 "Sand Painting", | |
90 "Speed Painting", | |
91 "Spray Painting", | |
92 "Still Life Painting", | |
93 "Surrealism Painting", | |
94 "Tanjore Painting", | |
95 "Tempera Painting", | |
96 "Velvet Painting", | |
97 "Watercolor Painting", | |
98 "Anime Art", | |
99 "Bedazzled Art Style", | |
100 "Button Art", | |
101 "Chalk Art", | |
102 "Comic Book Art", | |
103 "Conceptual Art", | |
104 "Leather Art Style", | |
105 "Line Art", | |
106 "Marble Art", | |
107 "Pop Art painting", | |
108 "Portrait Art", | |
109 "Sand Art", | |
110 "Street Art", | |
111 "Woven Art", | |
112 "Anime Style", | |
113 "Atari 2600 Style", | |
114 "Bauhaus Style", | |
115 "Coloring Book Style", | |
116 "Constructivism Style", | |
117 "Fauvism Style", | |
118 "Glitter Style", | |
119 "GTAV Style", | |
120 "NES Style", | |
121 "Retro Comic Book Style", | |
122 "SNES Style", | |
123 "Studio Ghibli Style", | |
124 "Woodburning Style", | |
125 "Woodcut Style", | |
126 "Ballpoint Pen Drawing", | |
127 "Blue Ballpoint Pen Drawing", | |
128 "Colored Pencil Drawing", | |
129 "Pencil Drawing", | |
130 "Red Ballpoint Pen Drawing", | |
131 "Comic Book Cover", | |
132 "Comic Book", | |
133 "Comic Book Panel", | |
134 "Colored Pencil Sketch", | |
135 "Pencil Sketch", | |
136 "3D Render", | |
137 "Boxart", | |
138 "Children's Book", | |
139 "Coloring Book", | |
140 "Copper Plate Engraving", | |
141 "Cross-Stitch", | |
142 "Diamond Engraving", | |
143 "Icon", | |
144 "Linocut", | |
145 "Lowpoly", | |
146 "Old Black and White Photograph", | |
147 "Photograph", | |
148 "Pixelart", | |
149 "Pop Up Book", | |
150 "Ring Engraving", | |
151 "Spray Paint", | |
152 "Stained Glass", | |
153 "Sticker", | |
154 "Stone Cut" | |
155 ] | |
156 artists = [None, | |
157 "Agnes Lawrence Pelton", | |
158 "Akihito Yoshida", | |
159 "Alex Grey", | |
160 "Alexander Jansson", | |
161 "Alphonse Mucha", | |
162 "Andy Warhol", | |
163 "Artgerm", | |
164 "Asaf Hanuka", | |
165 "Aubrey Beardsley", | |
166 "Banksy", | |
167 "Beeple", | |
168 "Ben Enwonwu", | |
169 "Bob Eggleton", | |
170 "Caravaggio Michelangelo Merisi", | |
171 "Caspar David Friedrich", | |
172 "Chris Foss", | |
173 "Claude Monet", | |
174 "Dan Mumford", | |
175 "David Mann", | |
176 "Diego Velázquez", | |
177 "Disney Animation Studios", | |
178 "Édouard Manet", | |
179 "Esao Andrews", | |
180 "Frida Kahlo", | |
181 "Gediminas Pranckevicius", | |
182 "Georgia O'Keeffe", | |
183 "Greg Rutkowski", | |
184 "Gustave Doré", | |
185 "Gustave Klimt", | |
186 "H.R. Giger", | |
187 "Hayao Miyazaki", | |
188 "Henri Matisse", | |
189 "HP Lovecraft", | |
190 "Ivan Shishkin", | |
191 "Jack Kirby", | |
192 "Jackson Pollock", | |
193 "James Jean", | |
194 "Jim Burns", | |
195 "Johannes Vermeer", | |
196 "John William Waterhouse", | |
197 "Katsushika Hokusai", | |
198 "Kim Tschang Yeul", | |
199 "Ko Young Hoon", | |
200 "Leonardo da Vinci", | |
201 "Lisa Frank", | |
202 "M.C. Escher", | |
203 "Mahmoud Saïd", | |
204 "Makoto Shinkai", | |
205 "Marc Simonetti", | |
206 "Mark Brooks", | |
207 "Michelangelo", | |
208 "Pablo Picasso", | |
209 "Paul Klee", | |
210 "Peter Mohrbacher", | |
211 "Pierre-Auguste Renoir", | |
212 "Pixar Animation Studios", | |
213 "Rembrandt", | |
214 "Richard Dadd", | |
215 "Rossdraws", | |
216 "Salvador Dalí", | |
217 "Sam Does Arts", | |
218 "Sandro Botticelli", | |
219 "Ted Nasmith", | |
220 "Ten Hundred", | |
221 "Thomas Kinkade", | |
222 "Tivadar Csontváry Kosztka", | |
223 "Victo Ngai", | |
224 "Vincent Di Fate", | |
225 "Vincent van Gogh", | |
226 "Wes Anderson", | |
227 "wlop", | |
228 "Yoshitaka Amano" | |
229 ] | |
230 style = random.choice(styles) | |
231 modifier = random.sample(modifiers, random.randint(0, len(modifi… | |
232 artist = random.choice(artists) | |
233 time = random.choice(times) | |
234 color = random.choice(colors) | |
235 lighting = random.choice(lightnings) | |
236 beauty = random.choice(beauties) | |
237 | |
238 etexta = [] | |
239 if beauty != None: | |
240 etexta.append(beauty) | |
241 if time != None: | |
242 etexta.append(time) | |
243 if style != None: | |
244 etexta.append(style) | |
245 if text != None: | |
246 etexta.append(text) | |
247 if background != None: | |
248 etexta.append("with") | |
249 etexta.append(background) | |
250 if artist != None: | |
251 etexta.append("by") | |
252 etexta.append(artist) | |
253 if len(modifier) > 0: | |
254 etexta.append(",") | |
255 modifiertext = "" | |
256 for m in modifier: | |
257 if m != None: | |
258 if len(modifiertext) > 0: | |
259 modifiertext += " " | |
260 modifiertext += str(m) | |
261 etexta.append(modifiertext) | |
262 if lighting != None: | |
263 etexta.append(",") | |
264 etexta.append(lighting) | |
265 if color != None: | |
266 etexta.append(",") | |
267 etexta.append(color) | |
268 etext = " ".join(etexta) | |
269 | |
270 return etext | |
271 | |
272 def usage(app): | |
273 app = os.path.basename(app) | |
274 print("usage: %s [-hft] [-c chan] [-d description] [-s sleept] Y… | |
275 file=sys.stderr) | |
276 sys.exit(1) | |
277 | |
278 def main(args): | |
279 try: | |
280 opts, largs = getopt.getopt(args[1:], "h") | |
281 except getopt.GetoptError as err: | |
282 print(str(err)) | |
283 usage(args[0]) | |
284 | |
285 for o, a in opts: | |
286 if o == "-h": | |
287 usage(args[0]) | |
288 else: | |
289 assert False, "unhandled option" | |
290 | |
291 if len(largs) < 1: | |
292 usage(args[0]) | |
293 | |
294 text = " ".join(largs) | |
295 print(beautify_prompt(text)) | |
296 return 0 | |
297 | |
298 if __name__ == "__main__": | |
299 sys.exit(main(sys.argv)) | |
300 |