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_nodesfolder 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.csvfrom 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