AnySue commited on
Commit
f6585af
·
verified ·
1 Parent(s): d675efd

I don't need a drop down for this but can you please add artist names to the generated prompt - Follow Up Deployment

Browse files
Files changed (3) hide show
  1. README.md +6 -4
  2. index.html +397 -19
  3. prompts.txt +5 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Ai Prompt Generator
3
- emoji:
4
  colorFrom: pink
5
- colorTo: indigo
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: ai-prompt-generator
3
+ emoji: 🐳
4
  colorFrom: pink
5
+ colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,397 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AI Prompt Generator</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
+ }
13
+ .prompt-box {
14
+ min-height: 150px;
15
+ transition: all 0.3s ease;
16
+ }
17
+ .prompt-box:focus {
18
+ box-shadow: 0 0 0 2px rgba(118, 75, 162, 0.5);
19
+ }
20
+ .copy-btn {
21
+ transition: all 0.2s ease;
22
+ }
23
+ .copy-btn:hover {
24
+ transform: scale(1.05);
25
+ }
26
+ .copy-btn.copied {
27
+ background-color: #10b981 !important;
28
+ }
29
+ .platform-icon {
30
+ transition: all 0.3s ease;
31
+ }
32
+ .platform-radio:checked + .platform-card {
33
+ border-color: #667eea;
34
+ box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.5);
35
+ }
36
+ .platform-radio:checked + .platform-card .platform-icon {
37
+ transform: scale(1.1);
38
+ }
39
+ @keyframes pulse {
40
+ 0% { opacity: 0.6; }
41
+ 50% { opacity: 1; }
42
+ 100% { opacity: 0.6; }
43
+ }
44
+ .generating {
45
+ animation: pulse 1.5s infinite;
46
+ }
47
+ </style>
48
+ </head>
49
+ <body class="min-h-screen gradient-bg text-gray-100">
50
+ <div class="container mx-auto px-4 py-8">
51
+ <div class="max-w-3xl mx-auto">
52
+ <!-- Header -->
53
+ <div class="text-center mb-8">
54
+ <h1 class="text-4xl font-bold mb-2">AI Prompt Generator</h1>
55
+ <p class="text-lg opacity-90">Transform your simple idea into a detailed AI art prompt</p>
56
+ </div>
57
+
58
+ <!-- Generator Form -->
59
+ <div class="bg-white bg-opacity-10 backdrop-blur-lg rounded-xl p-6 shadow-lg mb-8">
60
+ <div class="mb-6">
61
+ <label for="basicPrompt" class="block text-sm font-medium mb-2">Your Simple Idea</label>
62
+ <div class="relative">
63
+ <textarea
64
+ id="basicPrompt"
65
+ rows="2"
66
+ class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-20 border border-white border-opacity-30 placeholder-white placeholder-opacity-70 resize-none prompt-box"
67
+ placeholder="e.g. A futuristic city at night"></textarea>
68
+ <div class="absolute bottom-2 right-2 text-xs opacity-70">Characters: <span id="charCount">0</span>/120</div>
69
+ </div>
70
+ </div>
71
+
72
+ <div class="mb-6">
73
+ <label class="block text-sm font-medium mb-3">Select AI Platform</label>
74
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-3">
75
+ <!-- Midjourney -->
76
+ <label class="relative">
77
+ <input type="radio" name="platform" value="midjourney" class="hidden platform-radio" checked>
78
+ <div class="platform-card flex flex-col items-center justify-center p-4 bg-white bg-opacity-10 rounded-lg hover:bg-opacity-20 cursor-pointer border border-transparent">
79
+ <i class="fas fa-paint-brush text-3xl mb-2 platform-icon text-purple-300"></i>
80
+ <span>Midjourney</span>
81
+ </div>
82
+ </label>
83
+
84
+ <!-- Stable Diffusion -->
85
+ <label class="relative">
86
+ <input type="radio" name="platform" value="stable_diffusion" class="hidden platform-radio">
87
+ <div class="platform-card flex flex-col items-center justify-center p-4 bg-white bg-opacity-10 rounded-lg hover:bg-opacity-20 cursor-pointer border border-transparent">
88
+ <i class="fas fa-atom text-3xl mb-2 platform-icon text-blue-300"></i>
89
+ <span>Stable Diffusion</span>
90
+ </div>
91
+ </label>
92
+
93
+ <!-- DALL·E -->
94
+ <label class="relative">
95
+ <input type="radio" name="platform" value="dalle" class="hidden platform-radio">
96
+ <div class="platform-card flex flex-col items-center justify-center p-4 bg-white bg-opacity-10 rounded-lg hover:bg-opacity-20 cursor-pointer border border-transparent">
97
+ <i class="fas fa-robot text-3xl mb-2 platform-icon text-green-300"></i>
98
+ <span>DALL·E</span>
99
+ </div>
100
+ </label>
101
+
102
+ <!-- Other -->
103
+ <label class="relative">
104
+ <input type="radio" name="platform" value="other" class="hidden platform-radio">
105
+ <div class="platform-card flex flex-col items-center justify-center p-4 bg-white bg-opacity-10 rounded-lg hover:bg-opacity-20 cursor-pointer border border-transparent">
106
+ <i class="fas fa-rainbow text-3xl mb-2 platform-icon text-yellow-300"></i>
107
+ <span>Other</span>
108
+ </div>
109
+ </label>
110
+ </div>
111
+ </div>
112
+
113
+ <div class="mb-4">
114
+ <label for="styleSelect" class="block text-sm font-medium mb-2">Art Style</label>
115
+ <select id="styleSelect" class="w-full px-4 py-3 rounded-lg bg-indigo-900 border border-white border-opacity-30 appearance-none">
116
+ <option value="realistic">Realistic</option>
117
+ <option value="digital_art">Digital Art</option>
118
+ <option value="fantasy">Fantasy</option>
119
+ <option value="anime">Anime</option>
120
+ <option value="photographic">Photographic</option>
121
+ <option value="3d_render">3D Render</option>
122
+ <option value="watercolor">Watercolor</option>
123
+ <option value="cyberpunk">Cyberpunk</option>
124
+ <option value="steampunk">Steampunk</option>
125
+ <option value="surreal">Surreal</option>
126
+ </select>
127
+ </div>
128
+
129
+ <div class="flex flex-wrap gap-4">
130
+ <div class="flex-1 min-w-[120px]">
131
+ <label for="detailLevel" class="block text-sm font-medium mb-1">Detail Level</label>
132
+ <select id="detailLevel" class="w-full px-3 py-2 rounded-lg bg-indigo-900 border border-white border-opacity-30 appearance-none">
133
+ <option value="medium">Medium</option>
134
+ <option value="low">Simple</option>
135
+ <option value="high">Very Detailed</option>
136
+ </select>
137
+ </div>
138
+
139
+ <div class="flex-1 min-w-[120px]">
140
+ <label for="quality" class="block text-sm font-medium mb-1">Quality</label>
141
+ <select id="quality" class="w-full px-3 py-2 rounded-lg bg-indigo-900 border border-white border-opacity-30 appearance-none">
142
+ <option value="hq">High Quality</option>
143
+ <option value="standard">Standard</option>
144
+ <option value="ultra">Ultra HD</option>
145
+ </select>
146
+ </div>
147
+
148
+ <div class="flex-1 min-w-[120px]">
149
+ <label for="lighting" class="block text-sm font-medium mb-1">Lighting</label>
150
+ <select id="lighting" class="w-full px-3 py-2 rounded-lg bg-indigo-900 border border-white border-opacity-30 appearance-none">
151
+ <option value="dynamic">Dynamic</option>
152
+ <option value="soft">Soft</option>
153
+ <option value="dramatic">Dramatic</option>
154
+ <option value="neon">Neon</option>
155
+ </select>
156
+ </div>
157
+ </div>
158
+
159
+ <button id="generateBtn" class="w-full mt-6 px-6 py-3 rounded-lg bg-indigo-500 hover:bg-indigo-600 font-medium flex items-center justify-center">
160
+ <i class="fas fa-magic mr-2"></i>
161
+ Generate Enhanced Prompt
162
+ </button>
163
+ </div>
164
+
165
+ <!-- Result Section -->
166
+ <div class="bg-white bg-opacity-10 backdrop-blur-lg rounded-xl p-6 shadow-lg">
167
+ <div class="flex items-center justify-between mb-3">
168
+ <h2 class="text-xl font-semibold">Generated Prompt</h2>
169
+ <div class="flex items-center gap-2">
170
+ <span id="platformIndicator" class="text-sm px-2 py-1 rounded bg-white bg-opacity-20">
171
+ <i class="fas fa-paint-brush mr-1"></i> Midjourney
172
+ </span>
173
+ <button id="copyBtn" class="copy-btn text-sm px-3 py-1 rounded bg-indigo-500 hover:bg-indigo-600">
174
+ <i class="far fa-copy mr-1"></i> Copy
175
+ </button>
176
+ </div>
177
+ </div>
178
+
179
+ <div id="resultContainer" class="relative">
180
+ <div id="initialState" class="text-center py-8 px-4 bg-white bg-opacity-5 rounded-lg">
181
+ <i class="fas fa-wand-magic-sparkles text-4xl mb-3 opacity-60"></i>
182
+ <p>Enter your idea above and generate a detailed AI art prompt</p>
183
+ </div>
184
+
185
+ <div id="loadingState" class="hidden text-center py-8 px-4 bg-white bg-opacity-5 rounded-lg">
186
+ <div class="flex items-center justify-center gap-3">
187
+ <i class="fas fa-spinner fa-spin text-xl generating"></i>
188
+ <span class="font-medium">Crafting your perfect prompt...</span>
189
+ </div>
190
+ </div>
191
+
192
+ <div id="resultOutput" class="hidden">
193
+ <textarea id="generatedPrompt" class="w-full px-4 py-3 mb-3 rounded-lg bg-white bg-opacity-20 border border-white border-opacity-30 resize-none prompt-box" rows="6" readonly></textarea>
194
+ <div class="flex justify-end">
195
+ <button id="regenerateBtn" class="text-sm px-4 py-1.5 rounded-lg bg-white bg-opacity-10 hover:bg-opacity-20">
196
+ <i class="fas fa-sync-alt mr-1"></i> Regenerate
197
+ </button>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </div>
204
+
205
+ <script>
206
+ document.addEventListener('DOMContentLoaded', function() {
207
+ // Elements
208
+ const basicPrompt = document.getElementById('basicPrompt');
209
+ const generateBtn = document.getElementById('generateBtn');
210
+ const regenerateBtn = document.getElementById('regenerateBtn');
211
+ const copyBtn = document.getElementById('copyBtn');
212
+ const platformRadios = document.querySelectorAll('input[name="platform"]');
213
+ const platformIndicator = document.getElementById('platformIndicator');
214
+ const initialState = document.getElementById('initialState');
215
+ const loadingState = document.getElementById('loadingState');
216
+ const resultOutput = document.getElementById('resultOutput');
217
+ const generatedPrompt = document.getElementById('generatedPrompt');
218
+ const charCount = document.getElementById('charCount');
219
+
220
+ // Character count for textarea
221
+ basicPrompt.addEventListener('input', function() {
222
+ const count = this.value.length;
223
+ charCount.textContent = count;
224
+ if (count > 120) {
225
+ charCount.classList.add('text-yellow-300');
226
+ } else {
227
+ charCount.classList.remove('text-yellow-300');
228
+ }
229
+ });
230
+
231
+ // Platform selection change
232
+ platformRadios.forEach(radio => {
233
+ radio.addEventListener('change', function() {
234
+ if (this.checked) {
235
+ const platformName = this.value === 'midjourney' ? 'Midjourney' :
236
+ this.value === 'stable_diffusion' ? 'Stable Diffusion' :
237
+ this.value === 'dalle' ? 'DALL·E' : 'Generic AI';
238
+ const iconClass = this.value === 'midjourney' ? 'fa-paint-brush' :
239
+ this.value === 'stable_diffusion' ? 'fa-atom' :
240
+ this.value === 'dalle' ? 'fa-robot' : 'fa-rainbow';
241
+
242
+ platformIndicator.innerHTML = `<i class="fas ${iconClass} mr-1"></i> ${platformName}`;
243
+ }
244
+ });
245
+ });
246
+
247
+ // Generate button click
248
+ generateBtn.addEventListener('click', function() {
249
+ if (!basicPrompt.value.trim()) {
250
+ basicPrompt.focus();
251
+ return;
252
+ }
253
+
254
+ generatePrompt();
255
+ });
256
+
257
+ // Regenerate button click
258
+ regenerateBtn.addEventListener('click', generatePrompt);
259
+
260
+ // Copy button click
261
+ copyBtn.addEventListener('click', function() {
262
+ if (!generatedPrompt.value) return;
263
+
264
+ generatedPrompt.select();
265
+ document.execCommand('copy');
266
+
267
+ // Visual feedback
268
+ const originalText = copyBtn.innerHTML;
269
+ copyBtn.innerHTML = '<i class="fas fa-check mr-1"></i> Copied!';
270
+ copyBtn.classList.add('copied');
271
+
272
+ setTimeout(() => {
273
+ copyBtn.innerHTML = originalText;
274
+ copyBtn.classList.remove('copied');
275
+ }, 2000);
276
+ });
277
+
278
+ // Generate prompt function
279
+ function generatePrompt() {
280
+ const platform = document.querySelector('input[name="platform"]:checked').value;
281
+ const basicIdea = basicPrompt.value.trim();
282
+ const style = document.getElementById('styleSelect').value;
283
+ const detailLevel = document.getElementById('detailLevel').value;
284
+ const quality = document.getElementById('quality').value;
285
+ const lighting = document.getElementById('lighting').value;
286
+
287
+ // Show loading state
288
+ initialState.classList.add('hidden');
289
+ loadingState.classList.remove('hidden');
290
+ resultOutput.classList.add('hidden');
291
+ generateBtn.disabled = true;
292
+
293
+ // Simulate processing delay
294
+ setTimeout(() => {
295
+ // Generate the enhanced prompt based on platform and settings
296
+ const prompt = buildPrompt(platform, basicIdea, style, detailLevel, quality, lighting);
297
+
298
+ // Show result
299
+ loadingState.classList.add('hidden');
300
+ resultOutput.classList.remove('hidden');
301
+ generatedPrompt.value = prompt;
302
+ generateBtn.disabled = false;
303
+
304
+ // Auto-scroll to result
305
+ resultOutput.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
306
+ }, 1500);
307
+ }
308
+
309
+ // Prompt building function
310
+ function buildPrompt(platform, basicIdea, style, detailLevel, quality, lighting) {
311
+ // Artist names
312
+ const artists = {
313
+ realistic: "by Greg Rutkowski, by Artgerm, by Alphonse Mucha",
314
+ digital_art: "by WLOP, by Rossdraws, by Sakimichan",
315
+ fantasy: "by Noah Bradley, by Kekai Kotaki, by Rebecca Guay",
316
+ anime: "by Makoto Shinkai, by Kuvshinov Ilya, by Yoshitaka Amano",
317
+ photographic: "by Annie Leibovitz, by Steve McCurry, by Peter McKinnon",
318
+ "3d_render": "by Beeple, by Ian Spriggs, by Raphael Lacoste",
319
+ cyberpunk: "by Simon Stålenhag, by Katsuya Terada, by Feng Zhu",
320
+ steampunk: "by James Ng, by Igor Kieryluk, by Jakub Rozalski",
321
+ surreal: "by Salvador Dali, by Zdzisław Beksiński, by René Magritte"
322
+ };
323
+
324
+ // Style descriptors
325
+ const styleDescriptors = {
326
+ realistic: "hyper realistic, intricate details, photo realistic, highly detailed",
327
+ digital_art: "digital art, concept art, cinematic composition, dramatic lighting",
328
+ fantasy: "fantasy art, ethereal, magical, dreamlike, otherworldly",
329
+ anime: "anime style, vibrant colors, expressive characters, detailed background",
330
+ photographic: "professional photography, 35mm lens, shallow depth of field, bokeh",
331
+ "3d_render": "3D render, octane rendering, ray tracing, ultra detailed",
332
+ watercolor: "watercolor painting, soft textures, artistic brush strokes, pastel colors",
333
+ oil_painting: "oil painting texture, impasto brushwork, rich colors, painterly style",
334
+ pop_art: "pop art style, bold colors, comic book aesthetic, halftone patterns",
335
+ postmodernism: "postmodern art, eclectic mix of styles, conceptual, thought-provoking",
336
+ portrait: "professional portrait, expressive face, character study, emotionally compelling",
337
+ glass_art: "glass art style, translucent, refractive, stained glass effect",
338
+ graffiti: "graffiti art, urban street style, bold outlines, spray paint texture",
339
+ cyberpunk: "cyberpunk style, neon lighting, futuristic, dystopian, sci-fi",
340
+ steampunk: "steampunk style, brass and gears, Victorian era, mechanical details",
341
+ surreal: "surrealism, dreamlike, impossible architecture, metaphysical"
342
+ };
343
+
344
+ // Quality descriptors
345
+ const qualityDescriptors = {
346
+ hq: "high quality, 8k, ultra detailed",
347
+ standard: "high resolution, well detailed",
348
+ ultra: "ultra HD, 16k resolution, insanely detailed"
349
+ };
350
+
351
+ // Lighting descriptors
352
+ const lightingDescriptors = {
353
+ dynamic: "dynamic lighting, cinematic lighting, volumetric light",
354
+ soft: "soft lighting, diffused light, ambient glow",
355
+ dramatic: "dramatic lighting, high contrast, chiaroscuro",
356
+ neon: "neon lighting, vibrant colors, glow in the dark"
357
+ };
358
+
359
+ // Detail level
360
+ let detailText = "";
361
+ if (detailLevel === "low") {
362
+ detailText = "simple, clean composition";
363
+ } else if (detailLevel === "medium") {
364
+ detailText = "detailed, intricate elements";
365
+ } else {
366
+ detailText = "extremely detailed, intricate elements, complex composition";
367
+ }
368
+
369
+ // Platform-specific adjustments
370
+ let platformSpecific = "";
371
+ let platformEnd = "";
372
+
373
+ if (platform === "midjourney") {
374
+ platformSpecific = "--ar 16:9 --v 5";
375
+ } else if (platform === "stable_diffusion") {
376
+ platformSpecific = "((masterpiece)), (best quality), (ultra-detailed)";
377
+ platformEnd = ", trending on artstation, sharp focus";
378
+ } else if (platform === "dalle") {
379
+ platformSpecific = "highly detailed, digital illustration";
380
+ } else {
381
+ platformSpecific = "AI generated art, highly detailed";
382
+ }
383
+
384
+ // Build the prompt
385
+ let prompt = `${platformSpecific}, ${basicIdea}, ${styleDescriptors[style]}, ${detailText}, `;
386
+ prompt += `${lightingDescriptors[lighting]}, ${qualityDescriptors[quality]}, ${artists[style] || ''}`;
387
+ prompt += platformEnd;
388
+
389
+ // Capitalize first letter
390
+ prompt = prompt.charAt(0).toUpperCase() + prompt.slice(1);
391
+
392
+ return prompt;
393
+ }
394
+ });
395
+ </script>
396
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=AnySue/ai-prompt-generator" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
397
+ </html>
prompts.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Hello, I would like a prompt generator where I enter a simple prompt and choose between Midjourney, Stable Diffusion, DALL E etc and then it generates a long prompt
2
+ Please add to the art style drop down: watercolor, oil painting, pop art, Postmodernism, Portrait, Glass art, Graffiti, and photography
3
+ please change the background color for the art style drop down so that I can see the choices
4
+ Please do the same for the Detail Level, Quality, and Lighting drop downs
5
+ I don't need a drop down for this but can you please add artist names to the generated prompt