TischEins commited on
Commit
ecb6ea6
·
verified ·
1 Parent(s): fdedd0d

Upload 3 files

Browse files
Files changed (1) hide show
  1. app.py +129 -2
app.py CHANGED
@@ -1,5 +1,6 @@
1
 
2
  import gradio as gr
 
3
 
4
  camera_lens_map = {
5
  "Canon EOS R5": [
@@ -103,6 +104,108 @@ camera_lens_map = {
103
  "Fujinon XF 56mm f/1.2 R APD"
104
  ]
105
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  light_conditions = [
107
  "Golden Hour",
108
  "Blue Hour",
@@ -130,6 +233,9 @@ mj_versions = ["6", "6.1", "7"]
130
  def update_lens_dropdown(camera):
131
  return gr.update(choices=camera_lens_map[camera], value=camera_lens_map[camera][0])
132
 
 
 
 
133
  def toggle_visibility(engine):
134
  visible = engine == "Midjourney"
135
  return [gr.update(visible=visible)] * 4
@@ -145,7 +251,17 @@ def generate_prompt(engine, mj_version, camera, lens, film, light, aspect_ratio,
145
  else:
146
  prompt = f"A detailed scene of {scene}, captured using a {camera} and {lens}, simulated with {film} film look and {light} lighting."
147
  prompts.append(prompt)
148
- return "\n".join(prompts)
 
 
 
 
 
 
 
 
 
 
149
 
150
  with gr.Blocks() as demo:
151
  gr.Markdown("# TischEins.org | Midjourney Prompt Engine")
@@ -167,14 +283,25 @@ with gr.Blocks() as demo:
167
  num = gr.Slider(1, 50, value=5, label="Number of Prompts")
168
 
169
  output = gr.Textbox(label="Generated Prompts", lines=20)
 
 
170
  generate_btn = gr.Button("Generate Prompts")
 
 
 
 
171
 
172
  camera_dropdown.change(fn=update_lens_dropdown, inputs=camera_dropdown, outputs=lens_dropdown)
 
173
  engine_choice.change(fn=toggle_visibility, inputs=engine_choice, outputs=[mj_version_dropdown, aspect_ratio, quality, stylize])
 
174
  generate_btn.click(fn=generate_prompt, inputs=[
175
  engine_choice, mj_version_dropdown, camera_dropdown, lens_dropdown, film_dropdown,
176
  light_dropdown, aspect_ratio, quality, stylize, seed, scene, num
177
- ], outputs=output)
 
 
 
178
 
179
  gr.Markdown('<a href="https://tischeins.org" target="_blank">Pro Studio Mode by TischEins.org</a>')
180
 
 
1
 
2
  import gradio as gr
3
+ import pandas as pd
4
 
5
  camera_lens_map = {
6
  "Canon EOS R5": [
 
104
  "Fujinon XF 56mm f/1.2 R APD"
105
  ]
106
  }
107
+ camera_film_map = {
108
+ "Canon EOS R5": [
109
+ "Kodak Portra 400",
110
+ "Kodak Ektar 100",
111
+ "Kodak Gold 200"
112
+ ],
113
+ "Nikon Z8": [
114
+ "Cinestill 800T",
115
+ "Kodak Tri-X 400",
116
+ "Fujifilm Superia X-TRA 400"
117
+ ],
118
+ "Sony Alpha 7R V": [
119
+ "Agfa Vista 200",
120
+ "Kodak Ultramax 400",
121
+ "Fujifilm C200"
122
+ ],
123
+ "Fujifilm GFX 100 II": [
124
+ "Fujifilm Pro 400H",
125
+ "Fujifilm Provia 100F",
126
+ "Fujifilm Velvia 50"
127
+ ],
128
+ "Leica M11": [
129
+ "Ilford HP5 Plus",
130
+ "Kodak T-Max 100",
131
+ "AgfaPhoto APX 100"
132
+ ],
133
+ "Panasonic Lumix S5II": [
134
+ "Kodak Vision3 500T",
135
+ "Cinestill 50D",
136
+ "Kodak Gold 200"
137
+ ],
138
+ "Olympus OM-D E-M1 Mark III": [
139
+ "Kodak Ektachrome E100",
140
+ "Fujifilm Neopan 100",
141
+ "Kodak ColorPlus 200"
142
+ ],
143
+ "Pentax K-3 Mark III": [
144
+ "Ilford Delta 3200",
145
+ "Fomapan 100 Classic",
146
+ "Rollei Retro 400S"
147
+ ],
148
+ "Canon EOS 5D Mark IV": [
149
+ "Kodak Pro Image 100",
150
+ "Kodak Vision3 250D",
151
+ "Fujicolor 100"
152
+ ],
153
+ "Nikon D850": [
154
+ "AgfaPhoto Vista plus 400",
155
+ "Fujicolor Industrial 100",
156
+ "Kodak T-Max 400"
157
+ ],
158
+ "Sony A7 III": [
159
+ "Cinestill BwXX",
160
+ "Kodak Gold 100",
161
+ "Fujifilm Natura 1600"
162
+ ],
163
+ "Fujifilm X-T5": [
164
+ "Fujifilm Pro 160NS",
165
+ "Kodak Elite Chrome 100",
166
+ "Fujifilm Fortia SP"
167
+ ],
168
+ "Leica Q2": [
169
+ "Ilford XP2 Super 400",
170
+ "Kodak ColorPlus 100",
171
+ "Fujicolor Press 800"
172
+ ],
173
+ "Panasonic GH6": [
174
+ "Agfa Scala 200x",
175
+ "Kodak High-Speed Infrared",
176
+ "Rollei Vario Chrome"
177
+ ],
178
+ "Olympus PEN-F": [
179
+ "Fujifilm Sensia 200",
180
+ "Kodak Ektachrome 64T",
181
+ "Kodak Supra 400"
182
+ ],
183
+ "Pentax 645Z": [
184
+ "Kodak Panatomic-X",
185
+ "Agfa Portrait XPS 160",
186
+ "Kodak Vericolor III"
187
+ ],
188
+ "Canon EOS R6 Mark II": [
189
+ "Kodak Vision3 200T",
190
+ "Kodak Gold 400",
191
+ "Ilford Pan F Plus 50"
192
+ ],
193
+ "Nikon Z9": [
194
+ "Fujifilm Velvia 100",
195
+ "Kodak Ektachrome 160",
196
+ "Ilford Delta 100"
197
+ ],
198
+ "Sony FX3": [
199
+ "Kodak Vision3 500D",
200
+ "Cinestill 400D",
201
+ "Fujifilm Provia 400X"
202
+ ],
203
+ "Fujifilm X-H2": [
204
+ "Kodak Technical Pan",
205
+ "AgfaPhoto CT Precisa 100",
206
+ "Fujifilm Velvia 100F"
207
+ ]
208
+ }
209
  light_conditions = [
210
  "Golden Hour",
211
  "Blue Hour",
 
233
  def update_lens_dropdown(camera):
234
  return gr.update(choices=camera_lens_map[camera], value=camera_lens_map[camera][0])
235
 
236
+ def update_film_dropdown(camera):
237
+ return gr.update(choices=camera_film_map[camera], value=camera_film_map[camera][0])
238
+
239
  def toggle_visibility(engine):
240
  visible = engine == "Midjourney"
241
  return [gr.update(visible=visible)] * 4
 
251
  else:
252
  prompt = f"A detailed scene of {scene}, captured using a {camera} and {lens}, simulated with {film} film look and {light} lighting."
253
  prompts.append(prompt)
254
+ return "\n".join(prompts), prompts
255
+
256
+ def export_to_txt(prompts):
257
+ with open("prompts.txt", "w") as f:
258
+ f.write("\n".join(prompts))
259
+ return gr.File.update(value="prompts.txt", visible=True)
260
+
261
+ def export_to_csv(prompts):
262
+ df = pd.DataFrame({"Prompt": prompts})
263
+ df.to_csv("prompts.csv", index=False)
264
+ return gr.File.update(value="prompts.csv", visible=True)
265
 
266
  with gr.Blocks() as demo:
267
  gr.Markdown("# TischEins.org | Midjourney Prompt Engine")
 
283
  num = gr.Slider(1, 50, value=5, label="Number of Prompts")
284
 
285
  output = gr.Textbox(label="Generated Prompts", lines=20)
286
+ prompts_state = gr.State([])
287
+
288
  generate_btn = gr.Button("Generate Prompts")
289
+ export_txt_btn = gr.Button("Export as TXT")
290
+ export_csv_btn = gr.Button("Export as CSV")
291
+ download_txt = gr.File(visible=False)
292
+ download_csv = gr.File(visible=False)
293
 
294
  camera_dropdown.change(fn=update_lens_dropdown, inputs=camera_dropdown, outputs=lens_dropdown)
295
+ camera_dropdown.change(fn=update_film_dropdown, inputs=camera_dropdown, outputs=film_dropdown)
296
  engine_choice.change(fn=toggle_visibility, inputs=engine_choice, outputs=[mj_version_dropdown, aspect_ratio, quality, stylize])
297
+
298
  generate_btn.click(fn=generate_prompt, inputs=[
299
  engine_choice, mj_version_dropdown, camera_dropdown, lens_dropdown, film_dropdown,
300
  light_dropdown, aspect_ratio, quality, stylize, seed, scene, num
301
+ ], outputs=[output, prompts_state])
302
+
303
+ export_txt_btn.click(fn=export_to_txt, inputs=prompts_state, outputs=download_txt)
304
+ export_csv_btn.click(fn=export_to_csv, inputs=prompts_state, outputs=download_csv)
305
 
306
  gr.Markdown('<a href="https://tischeins.org" target="_blank">Pro Studio Mode by TischEins.org</a>')
307