Estimates how long the rest of the ComfyUI queue will take, learned from how long previous runs of each workflow took, and can shut the PC down once the queue is done. - Server-side tracker wraps the prompt queue, so timing keeps running when the browser tab is closed or reloaded - Run times are kept per workflow type (hash of the nodes that run and their links, widget values ignored), the estimate is the median of the last 10 runs - Node panel shows items left, time left, ETA, progress bar and a per-workflow table, with a Reset button and per-workflow reset in the right-click menu - Stats persist to user/brekel_queue_eta.json, nothing is stored in the workflow - Optional shutdown when the queue is done: 5 minute countdown with a cancel button, never remembered, cancelled again when new work is queued - One console line with the stats per finished prompt - Version 1.5.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
58 lines
2.8 KiB
Python
58 lines
2.8 KiB
Python
# Import the mappings from the new prompt chooser node
|
|
from .brekel_prompt_chooser import NODE_CLASS_MAPPINGS as CHOOSER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as CHOOSER_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the line-based prompt chooser node
|
|
from .brekel_prompt_line_chooser import NODE_CLASS_MAPPINGS as LINE_CHOOSER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LINE_CHOOSER_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the first node file using aliases to avoid name conflicts
|
|
from .brekel_auto_prompt_generator import NODE_CLASS_MAPPINGS as AUTO_PROMPT_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as AUTO_PROMPT_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the second node file using different aliases
|
|
from .brekel_enhance_prompt import NODE_CLASS_MAPPINGS as ENHANCE_PROMPT_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as ENHANCE_PROMPT_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the new resolution selector node
|
|
from .brekel_resolution_selector import NODE_CLASS_MAPPINGS as RESOLUTION_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as RESOLUTION_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the new load image node
|
|
from .brekel_load_image import NODE_CLASS_MAPPINGS as LOAD_IMAGE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LOAD_IMAGE_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the new save image node
|
|
from .brekel_save_image import NODE_CLASS_MAPPINGS as SAVE_IMAGE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as SAVE_IMAGE_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the directory-based lora loader node
|
|
from .brekel_lora_loader import NODE_CLASS_MAPPINGS as LORA_LOADER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LORA_LOADER_NAME_MAPPINGS
|
|
|
|
# Import the mappings from the queue ETA node (this also starts timing the queue)
|
|
from .brekel_queue_eta import NODE_CLASS_MAPPINGS as QUEUE_ETA_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as QUEUE_ETA_NAME_MAPPINGS
|
|
|
|
# Merge the class mappings from all files into one dictionary
|
|
NODE_CLASS_MAPPINGS = {
|
|
**CHOOSER_CLASS_MAPPINGS,
|
|
**LINE_CHOOSER_CLASS_MAPPINGS,
|
|
**AUTO_PROMPT_CLASS_MAPPINGS,
|
|
**ENHANCE_PROMPT_CLASS_MAPPINGS,
|
|
**RESOLUTION_CLASS_MAPPINGS,
|
|
**LOAD_IMAGE_CLASS_MAPPINGS,
|
|
**SAVE_IMAGE_CLASS_MAPPINGS,
|
|
**LORA_LOADER_CLASS_MAPPINGS,
|
|
**QUEUE_ETA_CLASS_MAPPINGS,
|
|
}
|
|
|
|
# Merge the display name mappings from all files into one dictionary
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
**CHOOSER_NAME_MAPPINGS,
|
|
**LINE_CHOOSER_NAME_MAPPINGS,
|
|
**AUTO_PROMPT_NAME_MAPPINGS,
|
|
**ENHANCE_PROMPT_NAME_MAPPINGS,
|
|
**RESOLUTION_NAME_MAPPINGS,
|
|
**LOAD_IMAGE_NAME_MAPPINGS,
|
|
**SAVE_IMAGE_NAME_MAPPINGS,
|
|
**LORA_LOADER_NAME_MAPPINGS,
|
|
**QUEUE_ETA_NAME_MAPPINGS,
|
|
}
|
|
|
|
# Tell ComfyUI where to find frontend JS extensions (viewport lock, etc.)
|
|
WEB_DIRECTORY = "./js"
|
|
|
|
# This tells Python what variables to export from this module
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"] |