Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -11,15 +11,15 @@ from reportlab.lib.pagesizes import letter
|
|
| 11 |
from reportlab.lib.styles import getSampleStyleSheet
|
| 12 |
|
| 13 |
import google.generativeai as genai
|
| 14 |
-
|
| 15 |
|
| 16 |
# Load API keys
|
| 17 |
load_dotenv()
|
| 18 |
api_key = os.getenv("GOOGLE_API_KEY")
|
| 19 |
-
|
| 20 |
|
| 21 |
if not api_key or not hf_token:
|
| 22 |
-
raise EnvironmentError("Missing API keys. Check GOOGLE_API_KEY
|
| 23 |
|
| 24 |
# Configure models
|
| 25 |
genai.configure(api_key=api_key)
|
|
@@ -54,15 +54,7 @@ def explain_scene(image):
|
|
| 54 |
response = text_model.generate_content([image, "Explain this image scene in detail."])
|
| 55 |
return response.text.strip()
|
| 56 |
except:
|
| 57 |
-
|
| 58 |
-
buffered = BytesIO()
|
| 59 |
-
image.save(buffered, format="PNG")
|
| 60 |
-
buffered.seek(0)
|
| 61 |
-
result = hf_client.image_to_text("Salesforce/blip-image-captioning-base", image=buffered)
|
| 62 |
-
return result.strip()
|
| 63 |
-
except:
|
| 64 |
-
traceback.print_exc()
|
| 65 |
-
return "Explanation unavailable."
|
| 66 |
|
| 67 |
def text_to_speech(text):
|
| 68 |
try:
|
|
@@ -339,7 +331,7 @@ with gr.Blocks(
|
|
| 339 |
generate_btn = gr.Button("β Generate This Scene", elem_id="generate-btn")
|
| 340 |
ai_coauthor_btn = gr.Button("π€ Let AI Write This One", elem_id="ai-write-btn")
|
| 341 |
recreate_btn = gr.Button("π Recreate This Scene", elem_id="recreate-btn")
|
| 342 |
-
next_btn = gr.Button("βοΈ
|
| 343 |
|
| 344 |
status = gr.Markdown()
|
| 345 |
image_output = gr.Image(label="πΌοΈ Scene Image", type="pil")
|
|
@@ -350,7 +342,7 @@ with gr.Blocks(
|
|
| 350 |
tts_btn = gr.Button("π Read Aloud", elem_id="tts-btn")
|
| 351 |
tts_audio = gr.Audio(label="Audio", autoplay=False)
|
| 352 |
|
| 353 |
-
done_btn = gr.Button("β
|
| 354 |
txt_file = gr.File(label="π Explanations (.txt)")
|
| 355 |
pdf_file = gr.File(label="π Scene PDF")
|
| 356 |
|
|
@@ -387,7 +379,7 @@ with gr.Blocks(
|
|
| 387 |
]
|
| 388 |
)
|
| 389 |
|
| 390 |
-
|
| 391 |
fn=generate_scene,
|
| 392 |
inputs=[
|
| 393 |
scene_total, theme, char_count, character_names, dialogue,
|
|
@@ -397,9 +389,28 @@ with gr.Blocks(
|
|
| 397 |
outputs=[
|
| 398 |
image_output, summary_output, explanation_output,
|
| 399 |
scene_images, scene_summaries, scene_explanations,
|
| 400 |
-
status, done_btn
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 401 |
]
|
| 402 |
)
|
|
|
|
|
|
|
| 403 |
|
| 404 |
ai_coauthor_btn.click(
|
| 405 |
fn=ai_write_scene,
|
|
|
|
| 11 |
from reportlab.lib.styles import getSampleStyleSheet
|
| 12 |
|
| 13 |
import google.generativeai as genai
|
| 14 |
+
|
| 15 |
|
| 16 |
# Load API keys
|
| 17 |
load_dotenv()
|
| 18 |
api_key = os.getenv("GOOGLE_API_KEY")
|
| 19 |
+
|
| 20 |
|
| 21 |
if not api_key or not hf_token:
|
| 22 |
+
raise EnvironmentError("Missing API keys. Check GOOGLE_API_KEY in .env.")
|
| 23 |
|
| 24 |
# Configure models
|
| 25 |
genai.configure(api_key=api_key)
|
|
|
|
| 54 |
response = text_model.generate_content([image, "Explain this image scene in detail."])
|
| 55 |
return response.text.strip()
|
| 56 |
except:
|
| 57 |
+
return "Explanation unavailable."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
def text_to_speech(text):
|
| 60 |
try:
|
|
|
|
| 331 |
generate_btn = gr.Button("β Generate This Scene", elem_id="generate-btn")
|
| 332 |
ai_coauthor_btn = gr.Button("π€ Let AI Write This One", elem_id="ai-write-btn")
|
| 333 |
recreate_btn = gr.Button("π Recreate This Scene", elem_id="recreate-btn")
|
| 334 |
+
next_btn = gr.Button("βοΈ Reset", elem_id="reset-btn")
|
| 335 |
|
| 336 |
status = gr.Markdown()
|
| 337 |
image_output = gr.Image(label="πΌοΈ Scene Image", type="pil")
|
|
|
|
| 342 |
tts_btn = gr.Button("π Read Aloud", elem_id="tts-btn")
|
| 343 |
tts_audio = gr.Audio(label="Audio", autoplay=False)
|
| 344 |
|
| 345 |
+
done_btn = gr.Button("β
Done", visible=False, elem_id="done-btn")
|
| 346 |
txt_file = gr.File(label="π Explanations (.txt)")
|
| 347 |
pdf_file = gr.File(label="π Scene PDF")
|
| 348 |
|
|
|
|
| 379 |
]
|
| 380 |
)
|
| 381 |
|
| 382 |
+
reset_btn.click(
|
| 383 |
fn=generate_scene,
|
| 384 |
inputs=[
|
| 385 |
scene_total, theme, char_count, character_names, dialogue,
|
|
|
|
| 389 |
outputs=[
|
| 390 |
image_output, summary_output, explanation_output,
|
| 391 |
scene_images, scene_summaries, scene_explanations,
|
| 392 |
+
status, done_btn,
|
| 393 |
+
character_names, dialogue, dialogue_speaker,
|
| 394 |
+
char_styles, char_moods, bg_style
|
| 395 |
+
],
|
| 396 |
+
_js=None
|
| 397 |
+
).then(
|
| 398 |
+
fn=lambda: [
|
| 399 |
+
gr.update(value=""), # character_names
|
| 400 |
+
gr.update(value=""), # dialogue
|
| 401 |
+
gr.update(value=""), # dialogue_speaker
|
| 402 |
+
gr.update(value=""), # char_styles
|
| 403 |
+
gr.update(value=""), # char_moods
|
| 404 |
+
gr.update(value="Fantasy") # bg_style default value
|
| 405 |
+
],
|
| 406 |
+
inputs=[],
|
| 407 |
+
outputs=[
|
| 408 |
+
character_names, dialogue, dialogue_speaker,
|
| 409 |
+
char_styles, char_moods, bg_style
|
| 410 |
]
|
| 411 |
)
|
| 412 |
+
|
| 413 |
+
|
| 414 |
|
| 415 |
ai_coauthor_btn.click(
|
| 416 |
fn=ai_write_scene,
|