Spaces:
Sleeping
Sleeping
fix: Button click handler output count mismatch
Browse files- app.py +18 -11
- prompts/predict_decompose_group.txt +1 -1
app.py
CHANGED
|
@@ -54,7 +54,7 @@ class SVGAnimationGenerator:
|
|
| 54 |
return {"error": "Failed to convert SVG to PNG"}
|
| 55 |
|
| 56 |
prompt = self.predict_decompose_group_prompt.format(
|
| 57 |
-
|
| 58 |
)
|
| 59 |
logger.info(f"Decomposition Prompt for {object_name}:\n{prompt}")
|
| 60 |
|
|
@@ -221,7 +221,9 @@ def process_svg(svg_file):
|
|
| 221 |
|
| 222 |
def predict_decompose_group(svg_file, svg_text, object_name):
|
| 223 |
if not object_name.strip():
|
| 224 |
-
|
|
|
|
|
|
|
| 225 |
|
| 226 |
if svg_file is not None:
|
| 227 |
svg_content_inner = process_svg(svg_file)
|
|
@@ -229,15 +231,21 @@ def predict_decompose_group(svg_file, svg_text, object_name):
|
|
| 229 |
svg_content_inner = svg_text.strip()
|
| 230 |
|
| 231 |
if not svg_content_inner:
|
| 232 |
-
|
|
|
|
|
|
|
| 233 |
|
| 234 |
parsed_svg = generator.parse_svg(svg_content_inner)
|
| 235 |
if "error" in parsed_svg:
|
| 236 |
-
|
|
|
|
|
|
|
| 237 |
|
| 238 |
decompose_result = generator.predict_decompose_group(parsed_svg, object_name)
|
| 239 |
if "error" in decompose_result:
|
| 240 |
-
|
|
|
|
|
|
|
| 241 |
|
| 242 |
decomposed_svg = decompose_result["svg_content"]
|
| 243 |
animation_suggestions = decompose_result["animation_suggestions"]
|
|
@@ -254,13 +262,12 @@ def predict_decompose_group(svg_file, svg_text, object_name):
|
|
| 254 |
"""
|
| 255 |
|
| 256 |
return (
|
| 257 |
-
decomposed_svg,
|
| 258 |
-
decomposed_svg,
|
| 259 |
-
animation_suggestions,
|
| 260 |
-
decomposed_svg_viewer,
|
| 261 |
)
|
| 262 |
|
| 263 |
-
|
| 264 |
def create_animation_preview(animation_desc: str, svg_content: str) -> str:
|
| 265 |
"""Create animation preview from description and SVG content."""
|
| 266 |
if not svg_content.strip():
|
|
@@ -447,7 +454,7 @@ with demo:
|
|
| 447 |
""",
|
| 448 |
)
|
| 449 |
|
| 450 |
-
|
| 451 |
fn=predict_decompose_group,
|
| 452 |
inputs=[svg_file, svg_text, object_name],
|
| 453 |
outputs=[
|
|
|
|
| 54 |
return {"error": "Failed to convert SVG to PNG"}
|
| 55 |
|
| 56 |
prompt = self.predict_decompose_group_prompt.format(
|
| 57 |
+
object_name=object_name, svg_content=svg_content
|
| 58 |
)
|
| 59 |
logger.info(f"Decomposition Prompt for {object_name}:\n{prompt}")
|
| 60 |
|
|
|
|
| 221 |
|
| 222 |
def predict_decompose_group(svg_file, svg_text, object_name):
|
| 223 |
if not object_name.strip():
|
| 224 |
+
error_msg = "Please enter a valid object name for the SVG"
|
| 225 |
+
error_html = (error_msg)
|
| 226 |
+
return "", error_msg, "", error_html
|
| 227 |
|
| 228 |
if svg_file is not None:
|
| 229 |
svg_content_inner = process_svg(svg_file)
|
|
|
|
| 231 |
svg_content_inner = svg_text.strip()
|
| 232 |
|
| 233 |
if not svg_content_inner:
|
| 234 |
+
error_msg = "Please upload an SVG file or enter SVG markup"
|
| 235 |
+
error_html = create_error_html(error_msg)
|
| 236 |
+
return "", error_msg, "", error_html
|
| 237 |
|
| 238 |
parsed_svg = generator.parse_svg(svg_content_inner)
|
| 239 |
if "error" in parsed_svg:
|
| 240 |
+
error_msg = parsed_svg["error"]
|
| 241 |
+
error_html = create_error_html(error_msg)
|
| 242 |
+
return "", error_msg, "", error_html
|
| 243 |
|
| 244 |
decompose_result = generator.predict_decompose_group(parsed_svg, object_name)
|
| 245 |
if "error" in decompose_result:
|
| 246 |
+
error_msg = decompose_result["error"]
|
| 247 |
+
error_html = create_error_html(error_msg)
|
| 248 |
+
return "", error_msg, "", error_html
|
| 249 |
|
| 250 |
decomposed_svg = decompose_result["svg_content"]
|
| 251 |
animation_suggestions = decompose_result["animation_suggestions"]
|
|
|
|
| 262 |
"""
|
| 263 |
|
| 264 |
return (
|
| 265 |
+
decomposed_svg, # For svg_content_hidden
|
| 266 |
+
decomposed_svg, # For groups_summary (분석 결과 표시)
|
| 267 |
+
animation_suggestions, # For animation_suggestion
|
| 268 |
+
decomposed_svg_viewer, # For decomposed_svg_viewer
|
| 269 |
)
|
| 270 |
|
|
|
|
| 271 |
def create_animation_preview(animation_desc: str, svg_content: str) -> str:
|
| 272 |
"""Create animation preview from description and SVG content."""
|
| 273 |
if not svg_content.strip():
|
|
|
|
| 454 |
""",
|
| 455 |
)
|
| 456 |
|
| 457 |
+
process_btn.click(
|
| 458 |
fn=predict_decompose_group,
|
| 459 |
inputs=[svg_file, svg_text, object_name],
|
| 460 |
outputs=[
|
prompts/predict_decompose_group.txt
CHANGED
|
@@ -2,7 +2,7 @@ You are an expert SVG decomposition specialist tasked with analyzing and improvi
|
|
| 2 |
|
| 3 |
Here is the SVG code you need to analyze and decompose:
|
| 4 |
|
| 5 |
-
<
|
| 6 |
{object_name}
|
| 7 |
</object_name>
|
| 8 |
|
|
|
|
| 2 |
|
| 3 |
Here is the SVG code you need to analyze and decompose:
|
| 4 |
|
| 5 |
+
<object_name>
|
| 6 |
{object_name}
|
| 7 |
</object_name>
|
| 8 |
|