364 lines
9.4 KiB
Markdown
364 lines
9.4 KiB
Markdown
<div align="center">
|
|
|
|
# 🎯 DebugPadawan's ComfyUI Essentials
|
|
|
|
*Essential custom nodes for ComfyUI workflows*
|
|
|
|
[](https://python.org)
|
|
[](https://github.com/comfyanonymous/ComfyUI)
|
|
[](LICENSE)
|
|
[](https://github.com/DebugPadawan/DebugPadawans-ComfyUI-Essentials/stargazers)
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
## ✨ Features
|
|
|
|
<table>
|
|
<tr>
|
|
<td><b>🔤 Text Processing</b></td>
|
|
<td>Split, join, and manipulate text strings with precision</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>📦 Data Conversion</b></td>
|
|
<td>Convert between text and JSON formats easily</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>🐛 Debug Tools</b></td>
|
|
<td>Print and inspect values during workflow execution</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>⏱️ Timing Control</b></td>
|
|
<td>Add delays and timing control to your workflows</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>🔧 Utilities</b></td>
|
|
<td>Essential helpers for workflow optimization</td>
|
|
</tr>
|
|
</table>
|
|
|
|
---
|
|
|
|
## 🚀 Installation
|
|
|
|
```bash
|
|
# Navigate to your ComfyUI custom nodes directory
|
|
cd ComfyUI/custom_nodes
|
|
|
|
# Clone the repository
|
|
git clone https://github.com/DebugPadawan/DebugPadawans-ComfyUI-Essentials.git
|
|
|
|
# Restart ComfyUI
|
|
```
|
|
|
|
---
|
|
|
|
## 📦 Available Nodes
|
|
|
|
### 🔤 Text Processing
|
|
|
|
<details>
|
|
<summary><b>📝 Text Splitter</b> - Split text strings by delimiter</summary>
|
|
|
|
**Category:** `DebugPadawan/Text`
|
|
|
|
Splits a text string at a specified delimiter and returns a list of strings.
|
|
|
|
**📥 Inputs:**
|
|
- `text` *(String)*: The text to split (supports multiline input)
|
|
- `delimiter` *(String)*: The character(s) to split by (default: `","`)
|
|
- `strip_whitespace` *(Boolean, optional)*: Remove leading/trailing whitespace (default: `True`)
|
|
- `remove_empty` *(Boolean, optional)*: Remove empty strings from result (default: `True`)
|
|
|
|
**📤 Outputs:**
|
|
- `text_list` *(List)*: The split list of strings
|
|
- `count` *(Integer)*: Number of elements in the list
|
|
|
|
**💡 Example:**
|
|
```
|
|
Input: "apple, banana, orange"
|
|
Delimiter: ","
|
|
Output: ["apple", "banana", "orange"] and 3
|
|
```
|
|
|
|
Process CSV-like data, split tag lists, separate coordinates, create filename lists, parse prompt components.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>🔗 Text Joiner</b> - Combine strings with custom delimiters</summary>
|
|
|
|
**Category:** `DebugPadawan/Text`
|
|
|
|
Combines a list of strings into a single text string with a customizable delimiter.
|
|
|
|
**📥 Inputs:**
|
|
- `text_list` *(List)*: List of strings to join
|
|
- `delimiter` *(String)*: Character(s) to join with (default: `", "`)
|
|
- `prefix` *(String, optional)*: Text to add at the beginning
|
|
- `suffix` *(String, optional)*: Text to add at the end
|
|
|
|
**📤 Outputs:**
|
|
- `joined_text` *(String)*: The combined text string
|
|
|
|
**💡 Example:**
|
|
```
|
|
Input: ["red", "green", "blue"]
|
|
Delimiter: " | "
|
|
Prefix: "Colors: "
|
|
Suffix: " - end"
|
|
Output: "Colors: red | green | blue - end"
|
|
```
|
|
|
|
Combine prompt parts, convert lists to readable text, create metadata tags, build filenames, format output strings.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>🔄 Text Replace</b> - Replace specific text in a string</summary>
|
|
|
|
**Category:** `DebugPadawan/Text`
|
|
|
|
Replaces all occurrences of a specific substring within a text string.
|
|
|
|
**📥 Inputs:**
|
|
- `text` *(String)*: The text to process
|
|
- `find` *(String)*: The substring to search for
|
|
- `replace` *(String)*: The string to replace it with
|
|
|
|
**📤 Outputs:**
|
|
- `text` *(String)*: The modified text string
|
|
|
|
**💡 Example:**
|
|
```
|
|
Input: "A beautiful sunset over the ocean"
|
|
Find: "sunset"
|
|
Replace: "sunrise"
|
|
Output: "A beautiful sunrise over the ocean"
|
|
```
|
|
|
|
Useful for dynamically adjusting prompts, modifying paths, and cleaning up generated text.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
### 📦 Data Conversion
|
|
|
|
<details>
|
|
<summary><b>🗃️ TextToJSON</b> - Convert text to JSON</summary>
|
|
|
|
**Category:** `DebugPadawan/JSON`
|
|
|
|
Converts a valid JSON string into a JSON object, enabling further data processing or integration with other nodes.
|
|
|
|
**📥 Inputs:**
|
|
- `text` *(String)*: The text to parse as JSON
|
|
|
|
**📤 Outputs:**
|
|
- `json` *(JSON/Object)*: The parsed JSON object
|
|
|
|
**💡 Example:**
|
|
```
|
|
Input: '{"name": "Alice", "age": 30}'
|
|
Output: { "name": "Alice", "age": 30 }
|
|
```
|
|
|
|
Use this node to quickly transform JSON-formatted text into a usable data structure for your ComfyUI workflows.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
### 🐛 Debug Tools
|
|
|
|
<details>
|
|
<summary><b>🖨️ Debug Print</b> - Console output for debugging</summary>
|
|
|
|
**Category:** `DebugPadawan/Debug`
|
|
|
|
Prints values to the console without interrupting the workflow. Perfect for debugging and monitoring data values during execution.
|
|
|
|
**📥 Inputs:**
|
|
- `value` *(Any)*: Any value to print to console (supports all data types)
|
|
- `label` *(String, optional)*: Label for the debug output (default: `"Debug"`)
|
|
|
|
**📤 Outputs:**
|
|
- `passthrough` *(Any)*: The same value passed through unchanged
|
|
|
|
**💻 Console Output:**
|
|
```
|
|
[MyLabel] list: ['Element1', 'Element2', 'Element3']
|
|
[Debug] str: Hello World
|
|
[Checkpoint] int: 42
|
|
[Data Flow] dict: {'key': 'value', 'count': 5}
|
|
[Boolean Test] bool: True
|
|
[Float Value] float: 3.14159
|
|
```
|
|
|
|
Monitor values during execution, debug complex workflows, verify data types, set checkpoints, troubleshoot unexpected results.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
### ⏱️ Timing Control
|
|
|
|
<details>
|
|
<summary><b>⏳ Wait</b> - Add delays to workflow execution</summary>
|
|
|
|
**Category:** `DebugPadawan/Timing`
|
|
|
|
Pauses workflow execution for a specified duration. Useful for rate limiting, timing control, or debugging workflow sequences.
|
|
|
|
**📥 Inputs:**
|
|
- `value` *(Any)*: Any value to pass through after the delay
|
|
- `delay_seconds` *(Float)*: Duration to wait in seconds (default: `1.0`)
|
|
- `label` *(String, optional)*: Label for console output (default: `"Wait"`)
|
|
|
|
**📤 Outputs:**
|
|
- `passthrough` *(Any)*: The same value passed through after delay
|
|
|
|
**💻 Console Output:**
|
|
```
|
|
[Wait] Waiting for 2.5 seconds...
|
|
[Wait] Wait completed.
|
|
[Custom Timer] Waiting for 5.0 seconds...
|
|
[Custom Timer] Wait completed.
|
|
```
|
|
|
|
Rate limit API calls, debug timing issues, control workflow execution speed, add pauses between operations, synchronize parallel processes.
|
|
|
|
**⚠️ Note:** Use with caution in production workflows as it will genuinely pause execution.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
### 🖼️ Image Utilities
|
|
|
|
<details>
|
|
<summary><b>📐 Image Info</b> - Extract image tensor dimensions</summary>
|
|
|
|
**Category:** `DebugPadawan/Image`
|
|
|
|
Extracts the width, height, and batch size from a ComfyUI Image tensor.
|
|
|
|
**📥 Inputs:**
|
|
- `image` *(Image)*: The image tensor to analyze
|
|
|
|
**📤 Outputs:**
|
|
- `width` *(Integer)*: Image width in pixels
|
|
- `height` *(Integer)*: Image height in pixels
|
|
- `batch_size` *(Integer)*: Number of images in the batch
|
|
|
|
Useful for dynamic resizing, conditional logic based on aspect ratio, or passing dimensions to other nodes.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
### 🔧 Utility Nodes
|
|
|
|
<details>
|
|
<summary><b>📊 List Info</b> - Analyze list properties</summary>
|
|
|
|
**Category:** `DebugPadawan/Utilities`
|
|
|
|
Analyzes a list and returns useful information about it.
|
|
|
|
**📥 Inputs:**
|
|
- `input_list` *(List)*: The list to analyze
|
|
|
|
**📤 Outputs:**
|
|
- `count` *(Integer)*: Number of elements
|
|
- `first_item` *(String)*: First element (as string)
|
|
- `last_item` *(String)*: Last element (as string)
|
|
|
|
Validate list processing results, get quick statistics, check if lists are empty, extract boundary values.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>🔀 Conditional String</b> - Boolean-based string selection</summary>
|
|
|
|
**Category:** `DebugPadawan/Logic`
|
|
|
|
Returns one of two strings based on a boolean condition.
|
|
|
|
**📥 Inputs:**
|
|
- `condition` *(Boolean)*: The condition to evaluate
|
|
- `true_string` *(String)*: String to return if True (default: `"True"`)
|
|
- `false_string` *(String)*: String to return if False (default: `"False"`)
|
|
|
|
**📤 Outputs:**
|
|
- `result` *(String)*: The selected string
|
|
|
|
Conditional prompt modification, dynamic filename generation, workflow branching, status message generation.
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
## 🎨 Quick Start Examples
|
|
|
|
### Basic Text Processing
|
|
```
|
|
"apple,banana,orange" → Text Splitter → ["apple", "banana", "orange"]
|
|
↓
|
|
["apple", "banana", "orange"] → Text Joiner → "apple | banana | orange"
|
|
```
|
|
|
|
### Text to JSON Conversion
|
|
```
|
|
'{"foo": "bar"}' → TextToJSON → { "foo": "bar" }
|
|
```
|
|
|
|
### Debug Workflow
|
|
```
|
|
Input Data → Debug Print ("Input") → Processing Node → Debug Print ("Output") → Result
|
|
```
|
|
|
|
### Timed Processing
|
|
```
|
|
Data → Wait (2.0s) → Processing → Wait (1.0s) → Output
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 Node Categories
|
|
|
|
| Category | Nodes | Purpose |
|
|
|----------|-------|---------|
|
|
| **DebugPadawan/Text** | Text Splitter, Text Joiner, Text Replace | Text manipulation and processing |
|
|
| **DebugPadawan/JSON** | TextToJSON | Text to JSON conversion |
|
|
| **DebugPadawan/Debug** | Debug Print | Debugging and monitoring |
|
|
| **DebugPadawan/Timing** | Wait | Timing control and delays |
|
|
| **DebugPadawan/Utilities** | List Info | Data analysis helpers |
|
|
| **DebugPadawan/Logic** | Conditional String | Conditional operations |
|
|
| **DebugPadawan/Image** | Image Info | Image tensor analysis |
|
|
|
|
---
|
|
|
|
## 🤝 Contributing
|
|
|
|
We welcome contributions! Feel free to:
|
|
- 🐛 Report bugs
|
|
- 💡 Suggest new features
|
|
- 🔧 Submit pull requests
|
|
- 📖 Improve documentation
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
This project is licensed under the [MIT License](LICENSE).
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
|
|
**Made with ❤️ by [DebugPadawan](https://github.com/DebugPadawan)**
|
|
|
|
</div> |