Fix multi-plate 3MF metadata extraction (Issue #92)

When exporting individual plates from a multi-plate 3MF in Bambu Studio,
all uploaded archives showed plate 1's name and thumbnail regardless of
which plate was actually exported.

Root cause: The 3MF parser used an incorrect XPath lookup (plate_idx
attribute) and didn't extract the plate index from slice_info.config
metadata.

Changes:
- Extract plate index from <metadata key="index" value="N"/> in
  slice_info.config
- Remove incorrect plate[@plate_idx='N'] XPath lookup that doesn't
  work for single-plate exports
- Set self.plate_number from extracted index so _extract_thumbnail()
  uses the correct plate thumbnail (e.g., plate_5.png instead of
  plate_1.png)
- Append " - Plate N" to print_name when plate index > 1 to
  distinguish multi-plate exports
- Add 7 unit tests for plate index extraction and print_name
  enhancement
This commit is contained in:
maziggy
2026-01-19 13:29:37 +01:00
committed by MartinNYHC
parent 564bc0bca3
commit 3a2ec8056c
5 changed files with 192 additions and 42 deletions
+3 -1
View File
@@ -219,7 +219,9 @@ async def list_ha_entities(db: AsyncSession = Depends(get_db)):
ha_token = await get_setting(db, "ha_token") or ""
if not ha_url or not ha_token:
raise HTTPException(400, "Home Assistant not configured. Please set HA URL and token in Settings.")
raise HTTPException(
400, "Home Assistant not configured. Please set HA URL and token in Settings → Network → Home Assistant."
)
entities = await homeassistant_service.list_entities(ha_url, ha_token)
return [HAEntity(**e) for e in entities]