New List Nodes: - Random List Selector: Pick random items from a list with seed control - List Shuffler: Shuffle list order deterministically - List Merger: Combine lists with concatenate/interleave modes - List Deduplicator: Remove duplicates while preserving order New Text Nodes: - Text Case Converter: Convert between UPPER, lower, Title Case, snake_case, kebab-case, camelCase, PascalCase - Text Trimmer: Advanced whitespace removal with multiple modes - Text Prefix Suffix: Add prefix/suffix to text with optional spacing Updated documentation in README.md with all new nodes.
1248 lines
31 KiB
Markdown
1248 lines
31 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/releases)
|
||
[](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>🔀 Logic & Math</b></td>
|
||
<td>Boolean logic gates and mathematical operations</td>
|
||
</tr>
|
||
<tr>
|
||
<td><b>🔧 Utilities</b></td>
|
||
<td>Essential helpers for workflow optimization and list management</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>
|
||
|
||
<details>
|
||
<summary><b>🔍 Text Regex (Search & Replace)</b> - Pattern-based text manipulation</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Searches for patterns using Regular Expressions and optionally replaces them.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to process
|
||
- `pattern` *(String)*: The regex pattern to search for
|
||
- `replace` *(String)*: The string to replace matches with
|
||
|
||
**📤 Outputs:**
|
||
- `text` *(String)*: The modified text string
|
||
- `matches` *(List)*: All strings that matched the pattern
|
||
- `found` *(Boolean)*: True if at least one match was found
|
||
|
||
Extract numbers, redact sensitive info, complex pattern replacement.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>💬 String Formatter</b> - Create custom strings with placeholders</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Formats a string using f-string-like syntax with up to 5 input strings.
|
||
|
||
**📥 Inputs:**
|
||
- `format_string` *(String)*: The template string with placeholders (e.g., "Hello {input1}, your number is {input2}").
|
||
- `input1` - `input5` *(String, optional)*: Up to five input strings to replace placeholders in the `format_string`.
|
||
|
||
**📤 Outputs:**
|
||
- `formatted_string` *(String)*: The resulting formatted string.
|
||
|
||
**💡 Example:**
|
||
```
|
||
Format String: "The result of {input1} plus {input2} is {input3}"
|
||
Input1: "2"
|
||
Input2: "3"
|
||
Input3: "5"
|
||
Output: "The result of 2 plus 3 is 5"
|
||
```
|
||
|
||
Useful for constructing dynamic prompts, filenames, messages, or URLs from multiple pieces of data.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔍 Text Compare</b> - Compare two strings with various modes</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Compares two text strings and returns a boolean result based on the comparison mode.
|
||
|
||
**📥 Inputs:**
|
||
- `text_a` *(String)*: First text to compare
|
||
- `text_b` *(String)*: Second text to compare
|
||
- `mode` *(List)*: Comparison mode - equals, not equals, contains, starts with, ends with
|
||
- `case_sensitive` *(Boolean, optional)*: Whether comparison is case sensitive (default: `True`)
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(Boolean)*: True if comparison matches
|
||
- `result_text` *(String)*: "True" or "False" as string
|
||
|
||
**💡 Example:**
|
||
```
|
||
Text A: "Hello World"
|
||
Text B: "hello"
|
||
Mode: "contains"
|
||
Case Sensitive: False
|
||
Output: True
|
||
```
|
||
|
||
Useful for conditional workflow branching based on text content.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📏 Text Length</b> - Get string length in characters, words, or lines</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Measures the length of a text string in different units.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to measure
|
||
- `count_mode` *(List)*: What to count - characters, words, lines (default: `characters`)
|
||
|
||
**📤 Outputs:**
|
||
- `length` *(Integer)*: The count
|
||
- `length_text` *(String)*: The count as a string
|
||
|
||
**💡 Example:**
|
||
```
|
||
Text: "Hello World"
|
||
Mode: "words"
|
||
Output: 2
|
||
```
|
||
|
||
Useful for validating prompt lengths, counting words, or checking character limits.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔤 Text Case</b> - Transform text case</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Transforms the case of text strings.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to transform
|
||
- `mode` *(List)*: Case mode - uppercase, lowercase, capitalize, title case, swap case
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(String)*: The transformed text
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: "hello world"
|
||
Mode: "title case"
|
||
Output: "Hello World"
|
||
```
|
||
|
||
Useful for normalizing prompts, formatting titles, or preparing text for processing.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>✂️ Text Trim</b> - Remove whitespace from text</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Removes whitespace from text strings.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to trim
|
||
- `mode` *(List)*: Where to trim - both, left, right, all (default: `both`)
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(String)*: The trimmed text
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: " Hello World "
|
||
Mode: "both"
|
||
Output: "Hello World"
|
||
```
|
||
|
||
The "all" mode removes all whitespace and collapses multiple spaces into single spaces.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔤 Text Case Converter</b> - Transform text case styles</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Converts text to different case styles for formatting prompts, filenames, and display text.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to convert
|
||
- `case_mode` *(List)*: Case style - UPPER, lower, Title Case, Sentence case, snake_case, kebab-case, camelCase, PascalCase
|
||
|
||
**📤 Outputs:**
|
||
- `converted_text` *(String)*: The converted text
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: "hello world"
|
||
Mode: "Title Case"
|
||
Output: "Hello World"
|
||
|
||
Input: "Hello World"
|
||
Mode: "snake_case"
|
||
Output: "hello_world"
|
||
|
||
Input: "hello world"
|
||
Mode: "PascalCase"
|
||
Output: "HelloWorld"
|
||
```
|
||
|
||
Normalize prompts, format filenames, convert naming conventions between different systems.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>✂️ Text Trimmer</b> - Advanced text trimming options</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Trims text with various whitespace removal options.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The text to trim
|
||
- `mode` *(List)*: Trim mode - both, start, end, all_whitespace, collapse_spaces
|
||
|
||
**📤 Outputs:**
|
||
- `trimmed_text` *(String)*: The trimmed text
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: " Hello World "
|
||
Mode: "collapse_spaces"
|
||
Output: "Hello World"
|
||
|
||
Mode: "all_whitespace"
|
||
Output: "HelloWorld"
|
||
```
|
||
|
||
Clean up prompt formatting, remove extra spaces, prepare text for further processing.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📎 Text Prefix Suffix</b> - Add prefix and/or suffix to text</summary>
|
||
|
||
**Category:** `DebugPadawan/Text`
|
||
|
||
Adds prefix and/or suffix to text with optional spacing.
|
||
|
||
**📥 Inputs:**
|
||
- `text` *(String)*: The base text
|
||
- `prefix` *(String, optional)*: Text to add at the beginning
|
||
- `suffix` *(String, optional)*: Text to add at the end
|
||
- `add_space` *(Boolean)*: Add space between parts (default: True)
|
||
|
||
**📤 Outputs:**
|
||
- `result_text` *(String)*: The modified text
|
||
|
||
**💡 Example:**
|
||
```
|
||
Text: "beautiful"
|
||
Prefix: "a"
|
||
Suffix: "sunset"
|
||
Output: "a beautiful sunset"
|
||
```
|
||
|
||
Build complex prompts from components, wrap text with markers, add modifiers to prompts.
|
||
|
||
</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>
|
||
|
||
<details>
|
||
<summary><b>💬 JSONToText</b> - Convert JSON to text</summary>
|
||
|
||
**Category:** `DebugPadawan/JSON`
|
||
|
||
Converts a JSON object back into a formatted JSON string.
|
||
|
||
**📥 Inputs:**
|
||
- `json_data` *(JSON/Object)*: The JSON object to convert.
|
||
- `indent` *(Integer, optional)*: Number of spaces for indentation (0 for no indentation, default: `0`).
|
||
|
||
**📤 Outputs:**
|
||
- `text` *(String)*: The JSON object as a string.
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: { "name": "Alice", "age": 30 }
|
||
Indent: 2
|
||
Output:
|
||
{
|
||
"name": "Alice",
|
||
"age": 30
|
||
}
|
||
```
|
||
|
||
Use this node to convert JSON data into a readable string for display, logging, or integration with nodes that expect string input.
|
||
|
||
</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>
|
||
|
||
<details>
|
||
<summary><b>🎨 Color Palette Extractor</b> - Get dominant colors from an image</summary>
|
||
|
||
**Category:** `DebugPadawan/Image`
|
||
|
||
Analyzes an image and extracts the most dominant colors as hex strings and a visual palette.
|
||
|
||
**📥 Inputs:**
|
||
- `image` *(Image)*: The image to analyze.
|
||
- `color_count` *(Integer)*: Number of colors to extract (default: 5, max: 20).
|
||
|
||
**📤 Outputs:**
|
||
- `hex_list` *(String)*: Comma-separated list of top hex colors.
|
||
- `dominant_color` *(String)*: The most frequent hex color.
|
||
- `palette_image` *(Image)*: A generated image showing the extracted color palette.
|
||
|
||
Maintain consistent styles, extract themes from reference images, or use colors for conditional prompting.
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
### 🧮 Math & Random
|
||
|
||
<details>
|
||
<summary><b>➕ Int/Float Math Operation</b> - Perform basic arithmetic</summary>
|
||
|
||
**Category:** `DebugPadawan/Math`
|
||
|
||
Performs simple math operations (add, subtract, multiply, divide, modulo, power) on integers or floats.
|
||
|
||
**📥 Inputs:**
|
||
- `a`, `b` *(Int/Float)*: The values to calculate
|
||
- `operation` *(List)*: The type of mathematical operation
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(Int/Float)*: The calculated value (returns both Int and Float variations)
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🎲 Random Generator</b> - Seed-based random values</summary>
|
||
|
||
**Category:** `DebugPadawan/Math`
|
||
|
||
Generates a random float or integer between a min and max value, driven by a specific seed for reproducibility.
|
||
|
||
**📥 Inputs:**
|
||
- `seed` *(Integer)*: Seed for the random generator
|
||
- `min_val`, `max_val` *(Float/Integer)*: The range bounds
|
||
- `mode` *(List)*: Whether to generate a float or an int
|
||
|
||
**📤 Outputs:**
|
||
- `val` *(Float/Integer)*: The random value (returns both Int and Float formats)
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
### 📝 List Manipulation
|
||
|
||
<details>
|
||
<summary><b>📝 Get List Item</b> - Retrieve an item from a list by index</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Retrieves a specific item from a list based on its index. Supports converting some iterable types to lists.
|
||
|
||
**📥 Inputs:**
|
||
- `input_list` *(Any, List force input)*: The input list or iterable.
|
||
- `index` *(Integer)*: The zero-based index of the item to retrieve.
|
||
|
||
**📤 Outputs:**
|
||
- `item` *(Any)*: The item at the specified index.
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input List: ["apple", "banana", "orange"]
|
||
Index: 1
|
||
Output: "banana"
|
||
```
|
||
|
||
Useful for extracting specific elements from lists, such as getting a particular image from a batch, a specific tag from a list, or individual components from a parsed string list.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>✂️ List Slicer</b> - Extract a range of items from a list</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Extracts a sub-list from a larger list using start and end indices.
|
||
|
||
**📥 Inputs:**
|
||
- `input_list` *(List)*: The input list.
|
||
- `start` *(Integer)*: Starting index (inclusive).
|
||
- `end` *(Integer)*: Ending index (exclusive, use 0 for "to the end").
|
||
|
||
**📤 Outputs:**
|
||
- `list_slice` *(List)*: The sub-list.
|
||
- `count` *(Integer)*: Number of elements in the slice.
|
||
|
||
Get the first N images of a batch, skip the first item, or take a specific range of values.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🎲 Random List Selector</b> - Pick random items from a list</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Randomly selects one or more items from a list with seed-based reproducibility.
|
||
|
||
**📥 Inputs:**
|
||
- `input_list` *(List)*: The input list.
|
||
- `seed` *(Integer)*: Seed for reproducible random selection.
|
||
- `count` *(Integer)*: Number of items to select (default: 1).
|
||
- `allow_duplicates` *(Boolean)*: Allow selecting the same item multiple times.
|
||
|
||
**📤 Outputs:**
|
||
- `selected_items` *(List)*: The randomly selected items.
|
||
- `count` *(Integer)*: Number of items selected.
|
||
- `first_item` *(Any)*: The first selected item (convenient for single selections).
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input List: ["style1", "style2", "style3", "style4", "style5"]
|
||
Seed: 42
|
||
Count: 2
|
||
Output: ["style3", "style1"]
|
||
```
|
||
|
||
Perfect for randomizing prompt styles, selecting random seeds, or picking random colors/tags from lists.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔀 List Shuffler</b> - Shuffle list order deterministically</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Shuffles a list into random order using a seed for reproducibility.
|
||
|
||
**📥 Inputs:**
|
||
- `input_list` *(List)*: The input list.
|
||
- `seed` *(Integer)*: Seed for reproducible shuffling.
|
||
|
||
**📤 Outputs:**
|
||
- `shuffled_list` *(List)*: The shuffled list.
|
||
- `count` *(Integer)*: Number of items.
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: ["a", "b", "c", "d"]
|
||
Seed: 123
|
||
Output: ["c", "a", "d", "b"]
|
||
```
|
||
|
||
Randomize processing order, shuffle prompt components, or reorder batch elements.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔗 List Merger</b> - Combine multiple lists</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Merges two lists together with different modes.
|
||
|
||
**📥 Inputs:**
|
||
- `list_a` *(List)*: First list.
|
||
- `list_b` *(List)*: Second list.
|
||
- `mode` *(List)*: Merge mode - "concatenate" or "interleave".
|
||
|
||
**📤 Outputs:**
|
||
- `merged_list` *(List)*: The merged list.
|
||
- `count` *(Integer)*: Number of items.
|
||
|
||
**💡 Example:**
|
||
```
|
||
List A: [1, 2, 3]
|
||
List B: ["a", "b", "c"]
|
||
Mode: "interleave"
|
||
Output: [1, "a", 2, "b", 3, "c"]
|
||
```
|
||
|
||
Combine tag lists, merge processing pipelines, or interleave prompt components.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🧹 List Deduplicator</b> - Remove duplicates from a list</summary>
|
||
|
||
**Category:** `DebugPadawan/List`
|
||
|
||
Removes duplicate items from a list while preserving order.
|
||
|
||
**📥 Inputs:**
|
||
- `input_list` *(List)*: The input list.
|
||
|
||
**📤 Outputs:**
|
||
- `deduplicated_list` *(List)*: List with duplicates removed.
|
||
- `count` *(Integer)*: Number of unique items.
|
||
- `removed_count` *(Integer)*: Number of duplicates removed.
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: ["apple", "banana", "apple", "orange", "banana"]
|
||
Output: ["apple", "banana", "orange"], count: 3, removed: 2
|
||
```
|
||
|
||
Clean up tag lists, remove redundant prompts, or filter unique values.
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
### 🔄 Type Conversion
|
||
|
||
<details>
|
||
<summary><b>🔀 Type Converter</b> - Universal type conversion</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts between different data types: string, int, float, and boolean.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Any)*: The value to convert
|
||
- `output_type` *(List)*: Target type - string, int, float, boolean
|
||
|
||
**📤 Outputs:**
|
||
- `converted` *(Any)*: The converted value
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 42 (int)
|
||
Type: "string"
|
||
Output: "42"
|
||
|
||
Input: "3.14" (string)
|
||
Type: "float"
|
||
Output: 3.14
|
||
```
|
||
|
||
Convert any value to any type, workflow data type compatibility, normalize inputs for nodes that require specific types.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔢 Int to Float</b> - Convert integer to float</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts an integer to a floating-point number.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Integer)*: The integer to convert
|
||
|
||
**📤 Outputs:**
|
||
- `float_value` *(Float)*: The converted float
|
||
|
||
Useful for nodes that only accept float inputs.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📐 Float to Int</b> - Convert float to integer</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts a float to an integer with rounding mode control.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The float to convert
|
||
- `mode` *(List)*: Rounding mode - round, floor, ceil
|
||
|
||
**📤 Outputs:**
|
||
- `int_value` *(Integer)*: The converted integer
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 3.7
|
||
Mode: "floor"
|
||
Output: 3
|
||
|
||
Input: 3.2
|
||
Mode: "ceil"
|
||
Output: 4
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔤 String to Int</b> - Parse string as integer</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts a string to an integer.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(String)*: The string to parse
|
||
|
||
**📤 Outputs:**
|
||
- `int_value` *(Integer)*: The parsed integer
|
||
|
||
Handles strings like "42" or "3.14" (converts via float first).
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔤 String to Float</b> - Parse string as float</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts a string to a floating-point number.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(String)*: The string to parse
|
||
|
||
**📤 Outputs:**
|
||
- `float_value` *(Float)*: The parsed float
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: "3.14159"
|
||
Output: 3.14159
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔤 String to Boolean</b> - Parse string as boolean</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts a string to a boolean value.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(String)*: The string to parse
|
||
|
||
**📤 Outputs:**
|
||
- `bool_value` *(Boolean)*: The parsed boolean
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: "true" → Output: True
|
||
Input: "yes" → Output: True
|
||
Input: "false" → Output: False
|
||
Input: "0" → Output: False
|
||
```
|
||
|
||
Recognizes: true/false, yes/no, 1/0, on/off (case insensitive).
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔢 Number to String</b> - Format number as string</summary>
|
||
|
||
**Category:** `DebugPadawan/Conversion`
|
||
|
||
Converts a number to a string with decimal precision control.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The number to convert
|
||
- `decimal_places` *(Integer)*: Number of decimal places (0-10)
|
||
|
||
**📤 Outputs:**
|
||
- `string_value` *(String)*: The formatted string
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 3.14159
|
||
Decimal Places: 2
|
||
Output: "3.14"
|
||
|
||
Input: 3.14159
|
||
Decimal Places: 0
|
||
Output: "3"
|
||
```
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
### 🔢 Number Utilities
|
||
|
||
<details>
|
||
<summary><b>📏 Number Clamp</b> - Clamp value between min and max</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Clamps a number to stay within a specified range.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The value to clamp
|
||
- `min_val` *(Float)*: Minimum allowed value (default: 0.0)
|
||
- `max_val` *(Float)*: Maximum allowed value (default: 1.0)
|
||
|
||
**📤 Outputs:**
|
||
- `clamped` *(Float)*: The clamped value
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 1.5, min: 0.0, max: 1.0
|
||
Output: 1.0
|
||
|
||
Input: -0.5, min: 0.0, max: 1.0
|
||
Output: 0.0
|
||
```
|
||
|
||
Useful for ensuring values stay within valid ranges, like RGB values or percentages.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔢 Number Round</b> - Round with precision control</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Rounds a number to a specified number of decimal places.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The value to round
|
||
- `decimal_places` *(Integer)*: Number of decimal places (0-10)
|
||
|
||
**📤 Outputs:**
|
||
- `rounded` *(Float)*: The rounded value
|
||
- `rounded_string` *(String)*: The rounded value as a formatted string
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 3.14159
|
||
Decimal Places: 2
|
||
Output: 3.14, "3.14"
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📊 Number Range</b> - Generate number sequence</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Generates a list of numbers from start to end with a step.
|
||
|
||
**📥 Inputs:**
|
||
- `start` *(Integer)*: Starting value
|
||
- `end` *(Integer)*: Ending value (exclusive)
|
||
- `step` *(Integer)*: Step increment
|
||
|
||
**📤 Outputs:**
|
||
- `range_list` *(List)*: List of integers
|
||
- `count` *(Integer)*: Number of items
|
||
|
||
**💡 Example:**
|
||
```
|
||
Start: 0, End: 10, Step: 2
|
||
Output: [0, 2, 4, 6, 8], 5
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>⚖️ Number Compare</b> - Compare two numbers</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Compares two numbers and returns a boolean result.
|
||
|
||
**📥 Inputs:**
|
||
- `a` *(Float)*: First value
|
||
- `b` *(Float)*: Second value
|
||
- `comparison` *(List)*: Comparison type - equal, not equal, greater, less, greater or equal, less or equal
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(Boolean)*: Comparison result
|
||
- `result_text` *(String)*: Result as text ("True"/"False")
|
||
|
||
Useful for conditional workflow branching based on numeric values.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📏 Number Absolute</b> - Get absolute value</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Returns the absolute (positive) value of a number.
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The value
|
||
|
||
**📤 Outputs:**
|
||
- `absolute` *(Float)*: The absolute value
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: -5.3
|
||
Output: 5.3
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>➖ Number Sign</b> - Get sign of a number</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Returns the sign of a number (-1, 0, or 1).
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The value
|
||
|
||
**📤 Outputs:**
|
||
- `sign` *(Integer)*: -1 (negative), 0 (zero), or 1 (positive)
|
||
- `sign_text` *(String)*: "negative", "zero", or "positive"
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 42 → Output: 1, "positive"
|
||
Input: -3.5 → Output: -1, "negative"
|
||
Input: 0 → Output: 0, "zero"
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔄 Number Remap</b> - Remap value between ranges</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Remaps a value from one range to another (linear interpolation).
|
||
|
||
**📥 Inputs:**
|
||
- `value` *(Float)*: The value to remap
|
||
- `from_min` *(Float)*: Source range minimum
|
||
- `from_max` *(Float)*: Source range maximum
|
||
- `to_min` *(Float)*: Target range minimum
|
||
- `to_max` *(Float)*: Target range maximum
|
||
|
||
**📤 Outputs:**
|
||
- `remapped` *(Float)*: The remapped value
|
||
|
||
**💡 Example:**
|
||
```
|
||
Input: 0.5, from: [0, 1], to: [0, 100]
|
||
Output: 50.0
|
||
|
||
Input: 25, from: [0, 100], to: [0, 1]
|
||
Output: 0.25
|
||
```
|
||
|
||
Perfect for normalizing values or converting between different scales.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📊 Number Lerp</b> - Linear interpolation</summary>
|
||
|
||
**Category:** `DebugPadawan/Number`
|
||
|
||
Performs linear interpolation between two values.
|
||
|
||
**📥 Inputs:**
|
||
- `a` *(Float)*: Start value
|
||
- `b` *(Float)*: End value
|
||
- `t` *(Float)*: Interpolation factor (0.0 to 1.0)
|
||
|
||
**📤 Outputs:**
|
||
- `lerped` *(Float)*: The interpolated value
|
||
|
||
**💡 Example:**
|
||
```
|
||
a: 0, b: 100, t: 0.5
|
||
Output: 50.0
|
||
|
||
a: 10, b: 20, t: 0.25
|
||
Output: 12.5
|
||
```
|
||
|
||
Useful for smooth transitions and blending values.
|
||
|
||
</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>
|
||
|
||
<details>
|
||
<summary><b>🔌 Logic Gate</b> - Boolean operations</summary>
|
||
|
||
**Category:** `DebugPadawan/Logic`
|
||
|
||
Performs AND, OR, NOT, or XOR operations on boolean inputs.
|
||
|
||
**📥 Inputs:**
|
||
- `a`, `b` *(Boolean)*: Boolean values.
|
||
- `operation` *(List)*: AND, OR, NOT (A), XOR.
|
||
|
||
**📤 Outputs:**
|
||
- `result` *(Boolean)*: The resulting boolean value.
|
||
|
||
Complex workflow branching and conditional logic.
|
||
|
||
</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 Regex, String Formatter, Text Compare, Text Length, Text Case, Text Trim, Text Case Converter, Text Trimmer, Text Prefix Suffix | Text manipulation and processing |
|
||
| **DebugPadawan/JSON** | TextToJSON, JSONToText | 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, Logic Gate | Conditional operations |
|
||
| **DebugPadawan/Image** | Image Info, Color Palette Extractor | Image tensor analysis and color extraction |
|
||
| **DebugPadawan/Math** | Int/Float Math Operation, Random Generator | Basic arithmetic and random number generation |
|
||
| **DebugPadawan/List** | Get List Item, List Slicer, Random List Selector, List Shuffler, List Merger, List Deduplicator | List manipulation |
|
||
| **DebugPadawan/Conversion** | Type Converter, Int to Float, Float to Int, String to Int, String to Float, String to Boolean, Number to String | Type conversion utilities |
|
||
| **DebugPadawan/Number** | Number Clamp, Number Round, Number Range, Number Compare, Number Absolute, Number Sign, Number Remap, Number Lerp | Number formatting and utilities |
|
||
|
||
---
|
||
|
||
## 🤝 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>
|