mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-22 05:32:12 -03:00
- Introduced a new storageHelpers module to centralize localStorage interactions, improving code maintainability and readability. - Updated various components and managers to utilize the new storageHelpers functions for setting, getting, and removing items from localStorage. - Added migration logic to handle localStorage items during application initialization, ensuring compatibility with the new storage structure. - Enhanced logging during application initialization for better debugging.
ComfyUI Workflow Parser
A module for parsing ComfyUI workflow JSON and extracting generation parameters.
Features
- Parse ComfyUI workflow JSON files to extract generation parameters
- Extract lora information from workflows
- Support for node traversal and parameter resolution
- Extensible architecture for supporting custom node types
- Dynamic loading of node processor extensions
Usage
Basic Usage
from workflow_params import parse_workflow
# Parse from a file
with open('my_workflow.json', 'r') as f:
workflow_json = f.read()
result = parse_workflow(workflow_json)
print(result)
Using the WorkflowParser directly
from workflow_params import WorkflowParser
parser = WorkflowParser()
result = parser.parse_workflow(workflow_json)
Loading Extensions
Extensions are loaded automatically by default, but you can also control this behavior:
from workflow_params import WorkflowParser
# Don't load extensions
parser = WorkflowParser(load_extensions=False)
# Load extensions from a custom directory
parser = WorkflowParser(extensions_dir='/path/to/extensions')
Creating Custom Node Processors
To support a custom node type, create a processor class:
from workflow_params import NodeProcessor, register_processor
@register_processor
class CustomNodeProcessor(NodeProcessor):
"""Processor for CustomNode nodes"""
NODE_CLASS_TYPE = "CustomNode"
REQUIRED_FIELDS = {"param1", "param2"}
def process(self, workflow_parser):
result = {}
# Extract direct values
if "param1" in self.inputs:
result["value1"] = self.inputs["param1"]
# Resolve referenced inputs
if "param2" in self.inputs:
result["value2"] = self.resolve_input("param2", workflow_parser)
return result
Command Line Interface
A command-line interface is available for testing:
python -m workflow_params.cli input_workflow.json -o output.json
Extension System
The module includes an extension system for dynamically loading node processors:
from workflow_params import get_extension_manager
# Get the extension manager
manager = get_extension_manager()
# Load all extensions
manager.load_all_extensions()
# Load a specific extension
manager.load_extension('path/to/extension.py')
Extensions should be placed in the workflow_params/extensions directory by default, or a custom directory can be specified.
Supported Node Types
- KSampler
- CLIPTextEncode
- EmptyLatentImage
- JoinStrings
- StringConstantMultiline
- CLIPSetLastLayer
- TriggerWord Toggle (LoraManager)
- Lora Loader (LoraManager)
- Lora Stacker (LoraManager)