From 8a489578eff55e5d2eb0b779e0ec5a7e99cb4a88 Mon Sep 17 00:00:00 2001 From: Sebastian Andersson Date: Fri, 15 Mar 2024 19:31:32 +0100 Subject: [PATCH] change: Don't update filament file without change --- spoolman2slicer.py | 31 +++++++++++++++++++++----- templates-superslicer/ABS+.template | 2 +- templates-superslicer/ASA.template | 2 +- templates-superslicer/PLA.template | 2 +- templates-superslicer/TPU.template | 2 +- templates-superslicer/default.template | 2 +- 6 files changed, 31 insertions(+), 10 deletions(-) diff --git a/spoolman2slicer.py b/spoolman2slicer.py index 3843f54..06e0333 100755 --- a/spoolman2slicer.py +++ b/spoolman2slicer.py @@ -86,6 +86,7 @@ templates = Environment(loader=loader) filament_id_to_filename = {} +filament_id_to_content = {} filename_usage = {} @@ -123,7 +124,7 @@ def get_filament_filename(filament): return args.dir + "/" + template.render(filament) -def delete_filament(filament, is_update = False): +def delete_filament(filament, is_update=False): """Delete the filament's file if no longer in use""" filename = filament_id_to_filename[filament["id"]] @@ -133,7 +134,12 @@ def delete_filament(filament, is_update = False): if filename_usage[filename] > 0: return - if not is_update: + new_filename = None + if is_update: + add_sm2s_to_filament(filament) + new_filename = get_filament_filename(filament) + + if filename != new_filename: print(f"Deleting: {filename}") os.remove(filename) @@ -157,7 +163,11 @@ def write_filament(filament): else: filename_usage[filename] = 1 - filament_id_to_filename[filament["id"]] = filename + filament_id = filament["id"] + + old_filename = filament_id_to_filename.get(filament_id) + + filament_id_to_filename[filament_id] = filename if "material" in filament: template_name = f"{filament['material']}.template" @@ -173,15 +183,25 @@ def write_filament(filament): if args.verbose: print("Using the default template") - print(f"Writing to: {filename}") - if args.verbose: + print(f"Rendering for filename: {filename}") print("Fields for the template:") print(filament) + filament_text = template.render(filament) + old_filament_text = filament_id_to_content.get(filament_id) + + if old_filament_text == filament_text and old_filename == filename: + if args.verbose: + print("Same content, file not updated") + return + + print(f"Writing to: {filename}") with open(filename, "w", encoding="utf-8") as cfg_file: print(filament_text, file=cfg_file) + filament_id_to_content[filament_id] = filament_text + if args.verbose: print() @@ -200,6 +220,7 @@ def handle_filament_update(filament): delete_filament(filament, is_update=True) write_filament(filament) + def handle_spool_update_msg(msg): """Handles spool update msgs received via WS""" diff --git a/templates-superslicer/ABS+.template b/templates-superslicer/ABS+.template index 965bc04..f505c48 100644 --- a/templates-superslicer/ABS+.template +++ b/templates-superslicer/ABS+.template @@ -1,4 +1,4 @@ -# generated by {{sm2s.name}} {{sm2s.version}} on {{sm2s.now}} +# generated by {{sm2s.name}} {{sm2s.version}} bed_temperature = {{settings_bed_temp|int}} bridge_fan_speed = -1 bridge_internal_fan_speed = -1 diff --git a/templates-superslicer/ASA.template b/templates-superslicer/ASA.template index 965bc04..f505c48 100644 --- a/templates-superslicer/ASA.template +++ b/templates-superslicer/ASA.template @@ -1,4 +1,4 @@ -# generated by {{sm2s.name}} {{sm2s.version}} on {{sm2s.now}} +# generated by {{sm2s.name}} {{sm2s.version}} bed_temperature = {{settings_bed_temp|int}} bridge_fan_speed = -1 bridge_internal_fan_speed = -1 diff --git a/templates-superslicer/PLA.template b/templates-superslicer/PLA.template index 2fe6efd..b444d0b 100644 --- a/templates-superslicer/PLA.template +++ b/templates-superslicer/PLA.template @@ -1,4 +1,4 @@ -# generated by {{sm2s.name}} {{sm2s.version}} on {{sm2s.now}} +# generated by {{sm2s.name}} {{sm2s.version}} bed_temperature = {{settings_bed_temp|int}} bridge_fan_speed = 100 bridge_internal_fan_speed = -1 diff --git a/templates-superslicer/TPU.template b/templates-superslicer/TPU.template index a97c664..303febf 100644 --- a/templates-superslicer/TPU.template +++ b/templates-superslicer/TPU.template @@ -1,4 +1,4 @@ -# generated by {{sm2s.name}} {{sm2s.version}} on {{sm2s.now}} +# generated by {{sm2s.name}} {{sm2s.version}} bed_temperature = {{settings_bed_temp|int}} bridge_fan_speed = -1 bridge_internal_fan_speed = -1 diff --git a/templates-superslicer/default.template b/templates-superslicer/default.template index 2fe6efd..b444d0b 100644 --- a/templates-superslicer/default.template +++ b/templates-superslicer/default.template @@ -1,4 +1,4 @@ -# generated by {{sm2s.name}} {{sm2s.version}} on {{sm2s.now}} +# generated by {{sm2s.name}} {{sm2s.version}} bed_temperature = {{settings_bed_temp|int}} bridge_fan_speed = 100 bridge_internal_fan_speed = -1