Tobias Geisler commited on
Commit
4239430
·
1 Parent(s): 200e5b9

Unique UUIDs for user sessions

Browse files
Files changed (1) hide show
  1. app.py +29 -10
app.py CHANGED
@@ -5,6 +5,7 @@ from dotenv import load_dotenv
5
  import os
6
  from openai import OpenAI
7
  import random
 
8
 
9
  load_dotenv()
10
  client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
@@ -16,10 +17,7 @@ APP_PASSWORD = os.getenv("APP_PASSWORD")
16
  if APP_PASSWORD is None:
17
  raise ValueError("Die Umgebungsvariable APP_PASSWORD ist nicht gesetzt.")
18
 
19
-
20
- GENERATION_TIMEOUT = float(os.getenv("GENERATION_TIMEOUT"))
21
- if GENERATION_TIMEOUT is None:
22
- GENERATION_TIMEOUT = 60
23
 
24
  last_generation_time = defaultdict(float)
25
 
@@ -39,7 +37,7 @@ def enhance_prompt(original_prompt):
39
  print("Ein Fehler ist beim Verbessern des Prompts aufgetreten:", e)
40
  return original_prompt
41
 
42
- def generate_image(prompt, use_magic_prompt, style, user_id, password):
43
  global last_generation_time
44
 
45
  if password != APP_PASSWORD:
@@ -47,7 +45,8 @@ def generate_image(prompt, use_magic_prompt, style, user_id, password):
47
 
48
  current_time = time.time()
49
  if current_time - last_generation_time[user_id] < GENERATION_TIMEOUT:
50
- return f"Bitte warte {GENERATION_TIMEOUT} Sekunden zwischen den Bildgenerierungen.", None
 
51
 
52
  if use_magic_prompt:
53
  prompt = enhance_prompt(prompt)
@@ -77,6 +76,9 @@ def generate_image(prompt, use_magic_prompt, style, user_id, password):
77
  print("Ein Fehler ist aufgetreten:", e)
78
  return f"Ein Fehler ist beim Generieren des Bildes aufgetreten: {error_message}", None
79
 
 
 
 
80
  examples = [
81
  "Astronaut im Dschungel, kalte Farbpalette, gedämpfte Farben, detailliert, 8k",
82
  "Ein Astronaut reitet auf einem grünen Pferd",
@@ -88,8 +90,19 @@ examples = [
88
  "Ein mittelalterlicher Ritter, der gegen einen Drachen kämpft"
89
  ]
90
 
 
 
 
 
 
 
 
 
91
  with gr.Blocks() as demo:
 
 
92
  gr.Markdown("# codora DALL-E 3 Bildgenerator")
 
93
  gr.Markdown(f"Gib einen Bildprompt ein und verwende optional die magische Prompt-Funktion, um ihn zu verbessern. Du kannst nur ein Bild alle {GENERATION_TIMEOUT} Sekunden generieren.")
94
 
95
  with gr.Row():
@@ -101,13 +114,12 @@ with gr.Blocks() as demo:
101
  choices=["vivid", "natural"],
102
  value="vivid"
103
  )
104
- user_id = gr.Textbox(label="Benutzer-ID", visible=False)
105
  password = gr.Textbox(label="App Passwort", type="password")
106
  generate_button = gr.Button("Bild generieren")
107
 
108
  with gr.Column(scale=1):
109
  final_prompt = gr.Textbox(label="Finaler Prompt")
110
- generated_image = gr.Image(label="Generiertes Bild", scale=0.5) # Set scale to 0.5 for 50% width
111
 
112
  # Place examples below the generation button
113
  gr.Examples(
@@ -117,8 +129,15 @@ with gr.Blocks() as demo:
117
 
118
  generate_button.click(
119
  fn=generate_image,
120
- inputs=[prompt, use_magic_prompt, style, user_id, password],
121
  outputs=[final_prompt, generated_image]
122
  )
123
 
124
- demo.launch()
 
 
 
 
 
 
 
 
5
  import os
6
  from openai import OpenAI
7
  import random
8
+ import uuid
9
 
10
  load_dotenv()
11
  client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
 
17
  if APP_PASSWORD is None:
18
  raise ValueError("Die Umgebungsvariable APP_PASSWORD ist nicht gesetzt.")
19
 
20
+ GENERATION_TIMEOUT = float(os.getenv("GENERATION_TIMEOUT", 60))
 
 
 
21
 
22
  last_generation_time = defaultdict(float)
23
 
 
37
  print("Ein Fehler ist beim Verbessern des Prompts aufgetreten:", e)
38
  return original_prompt
39
 
40
+ def generate_image(prompt, use_magic_prompt, style, password, user_id):
41
  global last_generation_time
42
 
43
  if password != APP_PASSWORD:
 
45
 
46
  current_time = time.time()
47
  if current_time - last_generation_time[user_id] < GENERATION_TIMEOUT:
48
+ remaining_time = int(GENERATION_TIMEOUT - (current_time - last_generation_time[user_id]))
49
+ return f"Bitte warte {remaining_time} Sekunden zwischen den Bildgenerierungen.", None
50
 
51
  if use_magic_prompt:
52
  prompt = enhance_prompt(prompt)
 
76
  print("Ein Fehler ist aufgetreten:", e)
77
  return f"Ein Fehler ist beim Generieren des Bildes aufgetreten: {error_message}", None
78
 
79
+ def get_user_id():
80
+ return str(uuid.uuid4())
81
+
82
  examples = [
83
  "Astronaut im Dschungel, kalte Farbpalette, gedämpfte Farben, detailliert, 8k",
84
  "Ein Astronaut reitet auf einem grünen Pferd",
 
90
  "Ein mittelalterlicher Ritter, der gegen einen Drachen kämpft"
91
  ]
92
 
93
+ def update_button_state(user_id):
94
+ current_time = time.time()
95
+ remaining_time = max(0, int(GENERATION_TIMEOUT - (current_time - last_generation_time[user_id])))
96
+ if remaining_time > 0:
97
+ return gr.update(value=f"Bitte warte {remaining_time} Sekunden", interactive=False)
98
+ else:
99
+ return gr.update(value="Bild generieren", interactive=True)
100
+
101
  with gr.Blocks() as demo:
102
+ user_id = get_user_id()
103
+
104
  gr.Markdown("# codora DALL-E 3 Bildgenerator")
105
+ gr.Markdown(f"Willkommen, {user_id}!")
106
  gr.Markdown(f"Gib einen Bildprompt ein und verwende optional die magische Prompt-Funktion, um ihn zu verbessern. Du kannst nur ein Bild alle {GENERATION_TIMEOUT} Sekunden generieren.")
107
 
108
  with gr.Row():
 
114
  choices=["vivid", "natural"],
115
  value="vivid"
116
  )
 
117
  password = gr.Textbox(label="App Passwort", type="password")
118
  generate_button = gr.Button("Bild generieren")
119
 
120
  with gr.Column(scale=1):
121
  final_prompt = gr.Textbox(label="Finaler Prompt")
122
+ generated_image = gr.Image(label="Generiertes Bild") # Removed scale argument
123
 
124
  # Place examples below the generation button
125
  gr.Examples(
 
129
 
130
  generate_button.click(
131
  fn=generate_image,
132
+ inputs=[prompt, use_magic_prompt, style, password, gr.State(user_id)],
133
  outputs=[final_prompt, generated_image]
134
  )
135
 
136
+ demo.load(
137
+ fn=update_button_state,
138
+ inputs=[gr.State(user_id)],
139
+ outputs=[generate_button],
140
+ every=1
141
+ )
142
+
143
+ demo.launch()