diff --git a/README.md b/README.md index dc96ba9..062d890 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ watcher: folders: - Z:\Path\To\Your\Comfy\Output\Folder overwrite: false + keep_workflow: false verbose: false write_suffix: __a1 ``` @@ -133,6 +134,7 @@ Modify these settings to suit your needs! |---------|---------|-------------| | `enabled` | `true` | If the file watcher feature is enabled (or disabled). | | `overwrite` | `false` | If `true`, the original file that Comfy writes will be overwritten. **NOTE:** Comfy workflow metadata is lost when converting to Civitai-compatible format, so leave this setting `false` if you want to retain copies of your workflow inside your image files! | +| `keep_workflow` | `false` | If `true`, the original ComfyUI workflow metadata will be retained in the file, otherwise it will be removed and only the Automatic1111-compatible metadata will remain. This setting applies to both overwritten and new files. | | `write_suffix` | `__a1` | The suffix to add to the image file when saving a copy. Has no effect if `overwrite` is `true`. | | `verbose` | `false` | If `true`, prints lots more info to the console when it processes an image. | | `folders` | *A nonexistant sample path you must change.* | Add one or more folders that Cute Comfy should watch for new files. The files written into this folder must contain Comfy workflow metadata, so if you are using a custom saving node, ensure that you are including the metadata in the images written here. Multiple directories are supported and can be watched at the same time. | diff --git a/watcher.py b/watcher.py index 767d993..90d40c5 100644 --- a/watcher.py +++ b/watcher.py @@ -135,6 +135,11 @@ def update_metadata(file, config_dict): with Image.open(file) as img: metadata = img.info + if 'parameters' in metadata: + if 'Seed' in metadata['parameters'] or 'Steps' in metadata['parameters']: + cuteprint(f'👀 This file already has Civitai-compatible metadata, skipping: {file}') if Verbose else None + return + if not metadata or 'workflow' not in metadata: cuteprint(f'👀 This file has no metadata, can\'t do anything: {file}') if Verbose else None return @@ -171,9 +176,14 @@ def update_metadata(file, config_dict): Negative prompt: {prompt_negative if prompt_negative else ''} {f'Steps: {steps}, ' if steps else ''}{f'Sampler: {sampler}, ' if sampler else ''}{f'CFG scale: {cfg}, ' if cfg else ''}{f'Seed: {seed}, ' if seed else ''}{f'AutoConverter: Cute Comfy, '}{f'Hashes: {hashes_json}'} ''' + prev_metadata = metadata metadata = PngInfo() metadata.add_text("parameters", new_metadata) + if 'keep_workflow' in config_dict['watcher'] and config_dict['watcher']['keep_workflow']: + metadata.add_text("propmt", prev_metadata['prompt']) + metadata.add_text("workflow", prev_metadata['workflow']) + if config_dict['watcher']['overwrite']: img.save(file, pnginfo=metadata) cuteprint(f'👀 💜 Updated Civitai-compatible metadata inside file: {file}')