From b6f815deff4feace2a85cb1a2c39c2a46635e9b8 Mon Sep 17 00:00:00 2001 From: shin132002 Date: Sun, 4 Jan 2026 15:13:54 +0900 Subject: [PATCH] v1.1.0: Add Filtered Random LoRA Loader, Preview Images, and Duplicate Handling --- README.md | 40 ++++++++++++++++++++++++++++++++++++++-- README_ja.md | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 843803a..0ca1c96 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ A ComfyUI custom node package for randomly selecting and applying LoRAs. Include 1. **Random LoRA Loader** - Select from 3 folders simultaneously 2. **Filtered Random LoRA Loader** - Single folder with keyword filtering (NEW v1.1.0) -![Workflow Example](./images/workflow.webp) +![Random LoRA Loader Workflow Example](./images/RLL_final_single.webp) +![Filtered Random LoRA Loader Workflow Example](./images/filterd_final_single.webp) --- @@ -109,7 +110,7 @@ Or manually delete the RandomLoRALoader folder and restart ComfyUI. This node works seamlessly with Wildcard Encode (Inspire) for dynamic prompt generation combined with random LoRA selection. -![Wildcard Encode Workflow](./images/wildcard_workflow.webp) +![Wildcard Encode + Random LoRA Loader Workflow](./images/RLL_final_wce.webp) #### Recommended Connection @@ -229,6 +230,7 @@ Each group can be configured individually: |---------|-------------|---------| | `lora_folder_path_X` | LoRA folder absolute path | (empty) | | `include_subfolders_X` | Include subfolders | `true` | +| `unique_by_filename_X` | Exclude duplicate filenames | `true` | | `model_strength_X` | MODEL application strength | `"1.0"` | | `clip_strength_X` | CLIP application strength | `"1.0"` | | `num_loras_X` | Number of LoRAs to select | Group 1: `1`, Groups 2/3: `0` | @@ -623,6 +625,8 @@ You can use this node as a simple LoRA syntax remover without applying any LoRAs ## Filtered Random LoRA Loader (NEW v1.1.0) +![Filtered Random LoRA Loader x1 Workflow](./images/filterd_final_single.webp) + ### Overview A single-group LoRA loader with keyword filtering capabilities. Designed for chaining multiple instances together. @@ -643,6 +647,7 @@ A single-group LoRA loader with keyword filtering capabilities. Designed for cha #### Folder Settings - `lora_folder_path` - Single folder path - `include_subfolders` - Include subfolders (default: True) +- `unique_by_filename` - Exclude duplicate filenames across subfolders (default: True) #### Keyword Filter - `keyword_filter` - Keywords (comma-separated, e.g., "style, anime") @@ -742,6 +747,35 @@ filter_mode: "OR" → Matches files containing EITHER "style" OR "anime" ``` +### Handling Duplicate Filenames + +If the same LoRA filename exists in multiple subfolders (e.g., originals and backups), the `unique_by_filename` option prevents selecting the same LoRA multiple times. + +**Example:** +``` +Folder structure: + /LoRA/ + ├── style/anime_v1.safetensors + └── backup/anime_v1.safetensors + +unique_by_filename: True (default) + → Only one anime_v1.safetensors will be selected + → First occurrence is kept (/LoRA/style/anime_v1.safetensors) + +unique_by_filename: False + → Both files can be selected + → May result in same LoRA applied twice with different strengths +``` + +**Log output when duplicates detected:** +``` +[FilteredRandomLoRALoader] Duplicate filename detected: anime_v1.safetensors + Keeping: /LoRA/style/anime_v1.safetensors + Skipping: /LoRA/backup/anime_v1.safetensors +``` + +**Recommendation:** Keep default `True` to avoid unintentional duplicate applications. + ### Metadata Search Performance **Filename search (Default):** @@ -779,6 +813,8 @@ Randomly selects 1 LoRA containing "anime" in filename #### Chaining Multiple Instances +![Filtered Random LoRA Loader x2 Workflow](./images/filterd_final_double.webp) + ``` [Filtered Random LoRA Loader A] folder: /loras/all/ diff --git a/README_ja.md b/README_ja.md index b75a2ba..c888a69 100644 --- a/README_ja.md +++ b/README_ja.md @@ -9,6 +9,7 @@ ComfyUIでLoRAをランダムに選択・適用するカスタムノードパッ ![RandomLoRAloderワークフロー例](./images/RLL_final_single.webp) ![FilteredRandomLoRAloderワークフロー例](./images/filterd_final_single.webp) + --- ## ノード概要 @@ -215,6 +216,7 @@ LoRA適用: フォルダ指定機能を使用 ✅ |------|------|------------| | `lora_folder_path_X` | LoRAフォルダの絶対パス | (空) | | `include_subfolders_X` | サブフォルダを含めるか | `true` | +| `unique_by_filename_X` | 重複ファイル名を除外 | `true` | | `model_strength_X` | MODELへの適用強度 | `"1.0"` | | `clip_strength_X` | CLIPへの適用強度 | `"1.0"` | | `num_loras_X` | 選択するLoRA個数 | グループ1: `1`, グループ2/3: `0` | @@ -714,6 +716,7 @@ LoRAを適用せず、単純にLoRA構文削除フィルタとしてこのノー #### フォルダ設定 - `lora_folder_path` - フォルダパス(1つ) - `include_subfolders` - サブフォルダを含む(デフォルト: True) +- `unique_by_filename` - サブフォルダ間の重複ファイル名を除外(デフォルト: True) #### キーワードフィルタ - `keyword_filter` - キーワード(カンマ区切り、例: "style, anime") @@ -730,6 +733,7 @@ LoRAを適用せず、単純にLoRA構文削除フィルタとしてこのノー #### 追加プロンプト - `additional_prompt_positive` - 追加ポジティブプロンプト(入力接続 or 直接記述) +- `additional_prompt_negative` - 追加ネガティブプロンプト(入力接続 or 直接記述) #### seed - `seed` - ランダムシード @@ -812,6 +816,35 @@ filter_mode: "OR" → "style" OR "anime" のいずれかを含むファイルにマッチ ``` +### 重複ファイル名の処理 + +同じLoRAファイル名が複数のサブフォルダに存在する場合(例: オリジナルとバックアップ)、`unique_by_filename`オプションで同じLoRAが複数回選択されるのを防ぎます。 + +**例:** +``` +フォルダ構成: + /LoRA/ + ├── style/anime_v1.safetensors + └── backup/anime_v1.safetensors + +unique_by_filename: True(デフォルト) + → anime_v1.safetensorsは1つだけ選択される + → 最初に見つかったものを保持(/LoRA/style/anime_v1.safetensors) + +unique_by_filename: False + → 両方のファイルが選択される可能性あり + → 同じLoRAが異なる強度で2回適用される可能性 +``` + +**重複検出時のログ出力:** +``` +[FilteredRandomLoRALoader] Duplicate filename detected: anime_v1.safetensors + Keeping: /LoRA/style/anime_v1.safetensors + Skipping: /LoRA/backup/anime_v1.safetensors +``` + +**推奨:** 意図しない重複適用を避けるため、デフォルトの`True`を維持してください。 + ### メタデータ検索のパフォーマンス **ファイル名検索(デフォルト):** @@ -875,8 +908,6 @@ filter_mode: "OR" #### Wildcard Encodeとの連携 -![Wildcard Encode+FilteredRandomLoRALoderワークフロー](./images/filterd_final_wce.webp) - ``` [Wildcard Encode] populated_text: "1girl, beautiful"