aura77 commited on
Commit
df1365d
·
verified ·
1 Parent(s): 93c734f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -17
app.py CHANGED
@@ -20,7 +20,7 @@ KEYS = {
20
  "stablehorde": "56kkbwcSPfHIr2YsDkpNDQ",
21
  "modelslab": "42zL3I6pH7Mv94jhNf4RGyuKGGT3GoEhfXZv47WwmQsfyhgC8XNttfOpvMKL",
22
  "openrouter": "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",
23
- "omniinfer": "sk_ffTeDYbT2PibvuC27eGFbeE4E-7wcCuWp4SVgFDFWHDU",
24
  "fireworks": "key_kH0svuL0"
25
  }
26
 
@@ -142,7 +142,7 @@ def generate_stable_horde(prompt):
142
  raise Exception("Error")
143
 
144
  # ==========================================
145
- # 3. Pipeline & Status Logic
146
  # ==========================================
147
  API_PIPELINE = [
148
  ("Stability AI", generate_stability),
@@ -164,29 +164,40 @@ def render_dashboard(statuses):
164
  html_content += "</div>"
165
  return html_content
166
 
167
- def generate_image_with_fallback(prompt, current_statuses):
168
  if not prompt.strip():
169
  yield None, "⚠️ **দয়া করে একটি প্রম্পট লিখুন!**", render_dashboard(current_statuses), current_statuses
170
  return
171
 
172
- # জেনারেশন শুরুর আগস্ট্যটাস 'অপে্ষমন' (সাদা বাি) রে দেও
 
 
 
 
 
 
 
 
 
 
173
  for name, _ in API_PIPELINE:
174
  current_statuses[name] = "⚪"
175
 
176
  yield None, "⏳ শুরু হচ্ছে...", render_dashboard(current_statuses), current_statuses
177
 
178
  for api_name, api_func in API_PIPELINE:
179
- current_statuses[api_name] = "🟡" # হলুদ বাতি: কানেক্ট করার চেষ্টা করছে
180
  yield None, f"⏳ **{api_name}**-এর সাথে কানেক্ট করা হচ্ছে...", render_dashboard(current_statuses), current_statuses
181
 
182
  try:
183
- image = api_func(prompt)
 
184
  if image:
185
- current_statuses[api_name] = "🟢" # সবুজ বাতি: ১০০% কাজ করেছে
186
  yield image, f"✅ **সফল!** {api_name} থেকে ছবি তৈরি হয়েছে।", render_dashboard(current_statuses), current_statuses
187
- return # সফল হলে এখানেই থেমে যাবে
188
  except Exception as e:
189
- current_statuses[api_name] = "🔴" # লাল বাতি: লিমিট শেষ বা সার্ভার ডাউন
190
  yield None, f"❌ **{api_name}** ফেইল করেছে। পরেরটিতে যাচ্ছে...", render_dashboard(current_statuses), current_statuses
191
  continue
192
 
@@ -195,23 +206,26 @@ def generate_image_with_fallback(prompt, current_statuses):
195
  # ==========================================
196
  # 4. Gradio Web UI
197
  # ==========================================
198
- # শুরুতে সবগুলোতে সাদা বাতি (⚪) থাকবে
199
  initial_statuses = {name: "⚪" for name, _ in API_PIPELINE}
200
 
201
  with gr.Blocks(theme=gr.themes.Base()) as demo:
202
- gr.Markdown("<h1 style='text-align: center;'>🎨 Pro AI Image Generator (Live Status)</h1>")
203
 
204
- # টপ ড্যাশবোর্ড (লাইট প্যানেল)
205
  status_board = gr.HTML(render_dashboard(initial_statuses))
206
-
207
- # স্ট্যাটাস মনে রাখার জন্য State ভেরিয়েবল
208
  status_state = gr.State(initial_statuses)
209
-
210
  gr.Markdown("<p style='text-align: center;'>⚪ অপেক্ষমান &nbsp; | &nbsp; ���� কানেক্টিং &nbsp; | &nbsp; 🟢 কানেক্টেড (সফল) &nbsp; | &nbsp; 🔴 লিমিট শেষ/ডাউন</p>")
211
 
212
  with gr.Row():
213
  with gr.Column(scale=1):
214
- prompt_input = gr.Textbox(label="ইমেজের বর্ণনা লিখুন (Prompt)", placeholder="A highly detailed futuristic city...", lines=4)
 
 
 
 
 
 
 
 
215
  generate_btn = gr.Button("Generate Image", variant="primary")
216
  log_box = gr.Markdown("স্ট্যাটাস: অপেক্ষমান...")
217
 
@@ -220,7 +234,7 @@ with gr.Blocks(theme=gr.themes.Base()) as demo:
220
 
221
  generate_btn.click(
222
  fn=generate_image_with_fallback,
223
- inputs=[prompt_input, status_state],
224
  outputs=[image_output, log_box, status_board, status_state]
225
  )
226
 
 
20
  "stablehorde": "56kkbwcSPfHIr2YsDkpNDQ",
21
  "modelslab": "42zL3I6pH7Mv94jhNf4RGyuKGGT3GoEhfXZv47WwmQsfyhgC8XNttfOpvMKL",
22
  "openrouter": "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",
23
+ "omniinfer": "sk_fTeDYbT2PibvuC27eGFbeE4E-7wcCuWp4SVgFDFWHDU",
24
  "fireworks": "key_kH0svuL0"
25
  }
26
 
 
142
  raise Exception("Error")
143
 
144
  # ==========================================
145
+ # 3. Pipeline & Status Logic (With Prompt Enhancer)
146
  # ==========================================
147
  API_PIPELINE = [
148
  ("Stability AI", generate_stability),
 
164
  html_content += "</div>"
165
  return html_content
166
 
167
+ def generate_image_with_fallback(prompt, style, current_statuses):
168
  if not prompt.strip():
169
  yield None, "⚠️ **দয়া করে একটি প্রম্পট লিখুন!**", render_dashboard(current_statuses), current_statuses
170
  return
171
 
172
+ # ম্যািক কিওয়ার্ড (যাতিগুলো োয়লিটি ং রিয়িস্টি)
173
+ style_modifiers = {
174
+ "ফটোরিয়ালিস্টিক (Photorealistic)": ", ultra realistic, highly detailed, photorealistic, 8k resolution, raw photo, masterpiece, soft cinematic lighting, stunning photography",
175
+ "এনিমে (Anime)": ", high quality anime style, studio ghibli, masterpiece, vibrant colors, detailed shading, gorgeous anime art",
176
+ "থ্রিডি আর্ট (3D)": ", 3d render, unreal engine 5, octane render, beautiful 3d masterpiece, highly detailed",
177
+ "ডিফল্ট (Default)": ""
178
+ }
179
+
180
+ # ইউজার যা লিখবে, তার সাথে ম্যাজিক কিওয়ার্ড যুক্ত হয়ে যাবে
181
+ enhanced_prompt = prompt.strip() + style_modifiers.get(style, "")
182
+
183
  for name, _ in API_PIPELINE:
184
  current_statuses[name] = "⚪"
185
 
186
  yield None, "⏳ শুরু হচ্ছে...", render_dashboard(current_statuses), current_statuses
187
 
188
  for api_name, api_func in API_PIPELINE:
189
+ current_statuses[api_name] = "🟡"
190
  yield None, f"⏳ **{api_name}**-এর সাথে কানেক্ট করা হচ্ছে...", render_dashboard(current_statuses), current_statuses
191
 
192
  try:
193
+ # উন্নত করা প্রম্পটটি API তে পাঠানো হচ্ছে
194
+ image = api_func(enhanced_prompt)
195
  if image:
196
+ current_statuses[api_name] = "🟢"
197
  yield image, f"✅ **সফল!** {api_name} থেকে ছবি তৈরি হয়েছে।", render_dashboard(current_statuses), current_statuses
198
+ return
199
  except Exception as e:
200
+ current_statuses[api_name] = "🔴"
201
  yield None, f"❌ **{api_name}** ফেইল করেছে। পরেরটিতে যাচ্ছে...", render_dashboard(current_statuses), current_statuses
202
  continue
203
 
 
206
  # ==========================================
207
  # 4. Gradio Web UI
208
  # ==========================================
 
209
  initial_statuses = {name: "⚪" for name, _ in API_PIPELINE}
210
 
211
  with gr.Blocks(theme=gr.themes.Base()) as demo:
212
+ gr.Markdown("<h1 style='text-align: center;'>🎨 Pro AI Image Generator (Live Status & HD Quality)</h1>")
213
 
 
214
  status_board = gr.HTML(render_dashboard(initial_statuses))
 
 
215
  status_state = gr.State(initial_statuses)
 
216
  gr.Markdown("<p style='text-align: center;'>⚪ অপেক্ষমান &nbsp; | &nbsp; ���� কানেক্টিং &nbsp; | &nbsp; 🟢 কানেক্টেড (সফল) &nbsp; | &nbsp; 🔴 লিমিট শেষ/ডাউন</p>")
217
 
218
  with gr.Row():
219
  with gr.Column(scale=1):
220
+ prompt_input = gr.Textbox(label="ইমেজের বর্ণনা লিখুন (Prompt)", placeholder="Two beautiful red roses in a garden...", lines=3)
221
+
222
+ # নতুন স্টাইল অপশন যুক্ত করা হয়েছে
223
+ style_input = gr.Radio(
224
+ choices=["ফটোরিয়ালিস্টিক (Photorealistic)", "এনিমে (Anime)", "থ্রিডি আর্ট (3D)", "ডিফল্ট (Default)"],
225
+ label="ছবি কেমন চাচ্ছেন? (Style)",
226
+ value="ফটোরিয়ালিস্টিক (Photorealistic)"
227
+ )
228
+
229
  generate_btn = gr.Button("Generate Image", variant="primary")
230
  log_box = gr.Markdown("স্ট্যাটাস: অপেক্ষমান...")
231
 
 
234
 
235
  generate_btn.click(
236
  fn=generate_image_with_fallback,
237
+ inputs=[prompt_input, style_input, status_state],
238
  outputs=[image_output, log_box, status_board, status_state]
239
  )
240