Spaces:
Sleeping
Sleeping
File size: 3,921 Bytes
58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c fa32687 58d514c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import gradio as gr
import pandas as pd
import random
import json
with open("presets.json") as f:
presets = json.load(f)
camera_lens_map = presets # placeholders
# rebuild camera_lens_map and camera_film_map from presets
camera_lens_map = {p: [presets[p]['lens']] for p in presets}
camera_film_map = {p: [presets[p]['film']] for p in presets}
light_conditions = list({p: presets[p]['light'] for p in presets}.values())
mj_versions = ["6","6.1","7"]
scene_variations = ["with dramatic lens flare","with soft bokeh background"] * 10
def apply_preset(p):
pre = presets[p]
return pre['camera'], pre['lens'], pre['film'], pre['light'], pre['scene']
def generate_mid(camera, lens, film, light, mjv, ar, q, s, seed, scene, num):
prompts=[]
for i in range(num):
var = random.choice(scene_variations)
sc = f"{scene}, {var}"
args = f"--ar {ar} --q {q} --s {s}" + (f" --seed {seed}" if seed else "")
prompts.append(f"{sc}, shot with {camera} and {lens}, using {film} film, under {light} {args} --v {mjv}")
return "\n".join(prompts), prompts
def generate_sora(camera, lens, film, light, scene):
var = random.choice(scene_variations)
sc = f"{scene}, {var}"
p = f"A detailed scene of {sc}, captured using a {camera} and {lens}, simulated with {film} film look and {light} lighting."
return p, [p]
def export_txt(prompts):
with open("prompts.txt","w") as f: f.write("\n".join(prompts))
return gr.File.update(value="prompts.txt")
def export_csv(prompts):
df=pd.DataFrame({"Prompt":prompts})
df.to_csv("prompts.csv", index=False)
return gr.File.update(value="prompts.csv")
with gr.Blocks() as demo:
gr.Markdown("## TischEins.org | Midjourney Prompt Engine\nPro Studio Prompt Generator for Midjourney and Sora")
preset = gr.Dropdown(choices=list(presets.keys()), label="Select Preset")
camera = gr.Dropdown(choices=list(camera_lens_map.keys()), label="Camera Model")
lens = gr.Dropdown(choices=[], label="Lens Model")
film = gr.Dropdown(choices=[], label="Color Film Type")
light = gr.Dropdown(choices=light_conditions, label="Light Condition")
preset.change(fn=apply_preset, inputs=preset, outputs=[camera, lens, film, light, scene := gr.Textbox(label="Scene Description")])
camera.change(fn=lambda x: gr.update(choices=camera_lens_map[x]), inputs=camera, outputs=lens)
camera.change(fn=lambda x: gr.update(choices=camera_film_map[x]), inputs=camera, outputs=film)
with gr.Tab("Midjourney"):
mjv = gr.Dropdown(choices=mj_versions, label="Midjourney Version", value="7")
ar = gr.Textbox(label="Aspect Ratio", value="5:4")
q = gr.Textbox(label="Quality", value="2")
s = gr.Textbox(label="Stylize", value="0")
seed = gr.Textbox(label="Seed (optional)")
num = gr.Slider(1,5,value=3,label="Number of Prompts")
out_mid, state_mid = gr.Textbox(lines=10), gr.State([])
gen = gr.Button("Generate")
gen.click(fn=generate_mid, inputs=[camera, lens, film, light, mjv, ar, q, s, seed, scene, num], outputs=[out_mid, state_mid])
txtb = gr.Button("Export TXT"); csvb = gr.Button("Export CSV")
dtxt = gr.File(visible=False); dcsv = gr.File(visible=False)
txtb.click(export_txt, state_mid, dtxt); csvb.click(export_csv, state_mid, dcsv)
with gr.Tab("ChatGPT Sora"):
out_s, state_s = gr.Textbox(lines=5), gr.State([])
gen_s = gr.Button("Generate")
gen_s.click(fn=generate_sora, inputs=[camera, lens, film, light, scene], outputs=[out_s, state_s])
txt_s = gr.Button("Export TXT"); csv_s = gr.Button("Export CSV")
dtxt_s = gr.File(visible=False); dcsv_s = gr.File(visible=False)
txt_s.click(export_txt, state_s, dtxt_s); csv_s.click(export_csv, state_s, dcsv_s)
gr.Markdown('<a href="https://tischeins.org">Pro Studio Mode by TischEins.org</a>')
demo.launch()
|