Spaces:
Sleeping
Sleeping
Upload 3 files
Browse files
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 |
|