ComfyUI Extension: Styles CSV Loader Extension for ComfyUI
This extension allows users to load styles from a CSV file, primarily for migration purposes from the automatic1111 Stable Diffusion web UI.
Custom Nodes (1)
README
Styles CSV Loader Extension for ComfyUI
Extension for ComfyUI that loads styles from a CSV file.
Description
This extension allows users to load styles from a CSV file (styles.csv), primarily for migration purposes from the automatic1111 Stable Diffusion web UI.
Installation
- Clone this repository into the
custom_nodes
folder of ComfyUI. Restart ComfyUI and the extension should be loaded. - OR: Use the ComfyUI-Manager to install this extension.
Important: The styles.csv
file must be located in the root of ComfyUI
where main.py
resides.
Nodes Description
Each style is represented as a dictionary with the keys being style_name
and the values being a list containing positive_prompt
and negative_prompt
. The prompts are outputs of this Node.
Custom CSV Files
The extension now supports loading styles from custom CSV files in addition to the default styles.csv
. You can specify a custom CSV file path using the optional csv_file_path
parameter:
- Relative paths: Relative to the ComfyUI root directory (e.g.,
"my_styles/portrait_styles.csv"
) - Absolute paths: Full file system paths (e.g.,
"/path/to/my/custom_styles.csv"
) - Default behavior: When no custom path is specified, it uses
styles.csv
from the ComfyUI root directory
If a selected style is not found in the custom CSV file, the node will fall back to the default styles loaded from styles.csv
.
CSV Format
The CSV file should have the following format:
name,prompt,negative_prompt
"Style Name","positive prompt text","negative prompt text"
"Another Style","more positive text","more negative text"
Examples
You can organize your styles in multiple CSV files for different purposes:
portraits.csv:
name,prompt,negative_prompt
"Professional Portrait","portrait photography, professional lighting, sharp focus","ugly, deformed, extra limbs"
"Vintage Portrait","vintage portrait, sepia tone, classical","modern, digital, colorful"
landscapes.csv:
name,prompt,negative_prompt
"Golden Hour","landscape photography, golden hour, wide angle","people, buildings, urban"
"Mountain Vista","mountain landscape, dramatic clouds, epic view","flat, boring, low quality"
Development
Setting up the development environment
- Clone the repository
- Install test dependencies:
pip install pytest pytest-cov
Running tests
Run all tests:
pytest tests/ -v
Run tests with coverage:
pytest tests/ -v --cov=. --cov-report=term-missing
Test Structure
tests/test_styles_csv_loader.py
- Main test file for the StylesCSVLoader classtests/fixtures/
- Example CSV files for testing:valid_styles.csv
- Properly formatted CSV with valid stylesinvalid_styles.csv
- CSV with missing columns to test error handlingcomplex_styles.csv
- CSV with complex content (quotes, special characters)
Continuous Integration
The project uses GitHub Actions for CI/CD. Tests are automatically run on:
- Python 3.8, 3.9, 3.10, 3.11, and 3.12
- Every push to main branch
- Every pull request
Code Coverage
The project maintains 100% test coverage. Coverage reports are generated during CI runs.
Author
- David Fischer
- GitHub: theUpsider
- Support me on BuyMeACoffee