diff --git a/src/tag/openspool/processor.py b/src/tag/openspool/processor.py index f8eb523..ec6f7ad 100644 --- a/src/tag/openspool/processor.py +++ b/src/tag/openspool/processor.py @@ -47,6 +47,12 @@ def __openspool_parse_payload(self, payload : bytes) -> GenericFilament | None: alpha = max(0x00, min(0xFF, int(data.get('alpha', 'FF'), 16))) color_argb = (alpha << 24) | color_hex + colors = [color_argb] + additional = data.get('additional_color_hexes') or [] + if isinstance(additional, list): + for extra_hex in additional[:4]: + colors.append((alpha << 24) | self.__parse_color_hex(extra_hex)) + try: diameter_mm = float(data.get('diameter', 1.75)) except (ValueError, TypeError): @@ -76,11 +82,11 @@ def __openspool_parse_payload(self, payload : bytes) -> GenericFilament | None: return GenericFilament( source_processor=self.name, - unique_id=GenericFilament.generate_unique_id("OpenSpool", brand, main_type, subtype, color_argb), + unique_id=GenericFilament.generate_unique_id("OpenSpool", brand, main_type, subtype, *colors), manufacturer=brand, type=main_type, modifiers=[subtype] if subtype else [], - colors=[color_argb], + colors=colors, diameter_mm=diameter_mm, weight_grams=weight_grams, hotend_min_temp_c=min_temp, diff --git a/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.bin b/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.bin new file mode 100644 index 0000000..ed49af9 Binary files /dev/null and b/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.bin differ diff --git a/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.yml b/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.yml new file mode 100644 index 0000000..e27551a --- /dev/null +++ b/test/tags/OpenSpool/eSUN PLA Silk Red Blue OpenSpool.yml @@ -0,0 +1,18 @@ +source_processor: OpenspoolTagProcessor +unique_id: f409ec9a27e7527e5e2e9f6e10f95c60ec79a9ecfbc4f7fc13f99fd814147953 +manufacturer: eSUN +type: PLA +modifiers: + - Silk +colors: + - 0xFFFF0000 + - 0xFF0000FF +diameter_mm: 1.75 +weight_grams: 1000 +hotend_min_temp_c: 190 +hotend_max_temp_c: 230 +bed_temp_c: 60.0 +drying_temp_c: 50.0 +drying_time_hours: 8.0 +manufacturing_date: "0001-01-01" +td: 0.0 \ No newline at end of file